[Spring][ํ˜ผ๊ณต] 4. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ - API (3)

2021. 7. 24. 17:45ยท๐Ÿ“ Language/โœ JAVA

์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ

3. API

MVC๋Š” ๋ณ€ํ™˜๋œ html์„ ์›น ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์ด๊ณ  (xml)

API๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๋กœ ๊ทธ๋Œ€๋กœ ๋‚ด๋ ค์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค. (json)

 

1) ๋ฌธ์ž ๋ฐ˜ํ™˜

Controller

  • ๊ธฐ์กด์— ๊ตฌํ˜„ํ•œ HelloController ์•ˆ์— ์ƒˆ๋กœ์šด ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด๋‹ค.
  • viewResolver๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  HTTP์˜ ์‘๋‹ต body์— ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๋ฐ˜ํ™˜ํ•  ๊ฒƒ์ด๋‹ค. (@ResponseBody)
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
    return "hello " + name;
}

 

์‹คํ–‰ ํ™”๋ฉด

์ด์ „์— ์ž‘์—…ํ–ˆ๋˜ MVC ๋ฐฉ์‹๊ณผ ๋ณ„ ์ฐจ์ด๊ฐ€ ์—†์–ด ๋ณด์ธ๋‹ค.

http://localhost:8080/hello-string?name=spring?!

 

ํ•˜์ง€๋งŒ, ํŽ˜์ด์ง€ ์†Œ์Šค ๋ณด๊ธฐ๋ฅผ ํ•˜๋ฉด ์ฐจ์ด์ ์ด ๋‚˜ํƒ€๋‚œ๋‹ค.

html Tag๊ฐ€ ๋ณด์ด์ง€ ์•Š๊ณ  ์˜ค์ง ์ž…๋ ฅํ•œ ๋ฌธ์ž๋งŒ ๋ณด์ธ๋‹ค.

view-source:http://localhost:8080/hello-string?name=spring?!

 

2) ๊ฐ์ฒด ๋ฐ˜ํ™˜

Controller

  • ๊ธฐ์กด์— ๊ตฌํ˜„ํ•œ HelloController ์•ˆ์— ์ƒˆ๋กœ์šด ๋ฉ”์„œ๋“œ ๋ฐ ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด๋‹ค.
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name)
    Hello hello = new Hello();
    hello.setName(name);
    return hello;
}

// static์œผ๋กœ ๋งŒ๋“ค๋ฉด ํด๋ž˜์Šค ์•ˆ์—์„œ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
static class Hello { // ๋ฐ˜ํ™˜ํ•  ๊ฐ์ฒด
    private String name;
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
}

 

์‹คํ–‰ ํ™”๋ฉด

๋ฌธ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•œ ๊ฒƒ๊ณผ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ ํ™”๋ฉด์ด ๋‚˜ํƒ€๋‚ฌ๋‹ค.

๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๊ฐ์ฒด๊ฐ€ Json์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ๋ฐ˜ํ™˜๋œ๋‹ค.

http://localhost:8080/hello-api?name=spring?!??

 

3) ๋™์ž‘ ๋ฐฉ์‹

์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์–ด๋–ค ํŽ˜์ด์ง€๋ฅผ ๋˜์ง€๋ฉด ๋‚ด์žฅ ํ†ฐ์บฃ ์„œ๋ฒ„๊ฐ€ ๋ฐ›์•„์„œ ์Šคํ”„๋งํ•œํ…Œ ์ „๋‹ฌํ•œ๋‹ค.
์ „๋‹ฌ๋ฐ›์€ ์Šคํ”„๋ง์€ ๋งค์นญ ๊ฐ€๋Šฅํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฐพ์•„ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค. (@GetMapping)

 

@ResponseBody๋Š” HTTP์˜ ์‘๋‹ต body์— ๊ทธ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ธฐ๋„๋ก ๋™์ž‘ํ•œ๋‹ค.

์ด๋•Œ, ๋„˜๊ฒจ์•ผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌธ์ž๋ผ๋ฉด ๋ฐ”๋กœ ๋ฐ˜ํ™˜ํ•˜๊ณ 

๊ฐ์ฒด๋ผ๋ฉด json ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜ํ•˜๋„๋ก default๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ๋‹ค.

 

๋ณ€ํ™˜์„ ํ•˜๊ธฐ ์œ„ํ•ด HttpMessageConverter๊ฐ€ ๋™์ž‘ํ•˜๋Š”๋ฐ,

๊ธฐ๋ณธ ๋ฌธ์ž ์ฒ˜๋ฆฌ๋Š” StringHttpMessageConverter์—์„œ ํ•˜๊ณ 

๊ธฐ๋ณธ ๊ฐ์ฒด ์ฒ˜๋ฆฌ๋Š” MappingJackson2HttpMessageConverter์—์„œ ํ•œ๋‹ค.

 

์ถ”๊ฐ€๋กœ byte ์ฒ˜๋ฆฌ ๋“ฑ ์—ฌ๋Ÿฌ HttpMessageConverter๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ ๋“ฑ๋ก๋˜์–ด ์žˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ์˜ HTTP Accept ํ—ค๋”์™€ ์„œ๋ฒ„์˜ ์ปจํŠธ๋กค๋Ÿฌ ๋ฐ˜ํ™˜ ํƒ€์ž… ์ •๋ณด๋ฅผ ์กฐํ•ฉํ•ด์„œ ์„ ํƒํ•œ๋‹ค.

 

๊ทธ ํ›„ ๋ณ€ํ™˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•œ ์„œ๋ฒ„๋‚˜ ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋™์ž‘ ํ™˜๊ฒฝ

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ“ Language/โœ JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Spring][ํ˜ผ๊ณต] 4. ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ - (2) ํšŒ์› ๋„๋ฉ”์ธ๊ณผ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋งŒ๋“ค๊ธฐ
  • [Spring][ํ˜ผ๊ณต] 4. ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ - (1) ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ ์ •๋ฆฌ
  • [Spring][ํ˜ผ๊ณต] 4. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ - MVC์™€ ํ…œํ”Œ๋ฆฟ ์—”์ง„ (2)
  • [Spring][ํ˜ผ๊ณต] 4. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ - ์ •์  ์ปจํ…์ธ  (1)
Blxxming
Blxxming
CS ์ง€์‹๊ณผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ฐฐ์šด ๊ฒƒ, ๊ฒฝํ—˜ํ•œ ๊ฒƒ ๋“ฑ์„ ๊ธฐ๋กํ•˜๋Š” ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
  • Blxxming
    ๐Ÿ’ก๋ฒˆ๋œฉ๐Ÿ’ก
    Blxxming
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๊ณต์ง€์‚ฌํ•ญ

    • Tech Interview
    • ๐Ÿ“š Tech (246)
      • ๐Ÿ“ Computer Science (96)
        • โœ OS (12)
        • โœ Network & Web (10)
        • โœ Database (11)
        • โœ Data Structure (6)
        • โœ Algorithm (40)
        • โœ Design Pattern (9)
        • โœ Cloud Computing (3)
        • โœ (5)
      • ๐Ÿ“ Language (73)
        • โœ Language (6)
        • โœ C & C++ (11)
        • โœ C# (19)
        • โœ JAVA (37)
      • ๐Ÿ“ Game (43)
        • โœ Computer Graphics (2)
        • โœ Unity (14)
        • โœ Unreal (26)
        • โœ (1)
      • ๐Ÿ“ Book (34)
        • โœ Effective (3)
        • โœ Game Server (16)
        • โœ Clean Code (14)
        • โœ (1)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Blxxming
[Spring][ํ˜ผ๊ณต] 4. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ - API (3)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”