โฅ ์์คํ ๊ฐ ์ํต์ ์ํ ์ธํฐํ์ด์ค
API (Application Programming Interface)
API๋ ์ํํธ์จ์ด์ ์ํํธ์จ์ด๊ฐ ๊ธฐ๋ฅ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด ์ ํด๋์ ๊ท์น(์ธํฐํ์ด์ค)์ ๋๋ค.
์๋ก ๋ค๋ฅธ ์์คํ ์ด ํจ์จ์ ์ด๊ณ ์์ ํ๊ฒ ์ํตํ ์ ์๋๋ก ๋์ต๋๋ค.
โฅ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ณต๊ฐ
1. ์์ฒญ๋ผ์ธ (Request Line)
2. ํค๋ (Headers)
3. ๋ฐ๋ (Body) โฌ
๋ฐ์ดํฐ๊ฐ ๋ด๊ธฐ๋ ์์ญ
POST
, PUT
์์ฒญ ์ ์ฌ์ฉ.GET
์์ฒญ์ ๋ณดํต Body๊ฐ ์์.POST /api/user HTTP/1.1
Content-Type: application/json
{
"username": "jaewoong",
"email": "jae@example.com"
}
โฅ HTTP Body ๋ฐ์ดํฐ๋ฅผ ์๋ฐ๋ก ๋งคํํ๋ ๋ฐฉ๋ฒ
@RequestBody
๋ HTTP ์์ฒญ์ Body๋ฅผ ์๋ฐ ๊ฐ์ฒด๋ String์ผ๋ก ๋ณํ.required = true
โ Body๊ฐ ์์ผ๋ฉด 400 Bad Request ์ค๋ฅ ๋ฐ์.required = false
์ค์ ์ด์ null
๋ก ์ฒ๋ฆฌ๋จ.@PostMapping("/example") // POST ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์๋ํฌ์ธํธ
public ResponseEntity<String> example(@RequestBody(required = false) String jsonData) {
if (jsonData == null) {
return ResponseEntity.ok("No data provided"); // Body๊ฐ ์์ ๋ ์๋ต
}
return ResponseEntity.ok("Received data: " + jsonData); // Body๊ฐ ์์ ๋ ์๋ต
}
"No data provided"
"Received data: {jsonData}"
API์ HTTP Body, ๊ทธ๋ฆฌ๊ณ @RequestBody๋ฅผ ์ดํดํ๋ฉด ์ ์ฐํ๊ณ ํจ์จ์ ์ธ RESTful ์๋น์ค๋ฅผ ์ค๊ณํ ์ ์๋ค.
ํญ๋ชฉ | ์ค๋ช |
---|---|
API | ์์คํ ๊ฐ ๋ฐ์ดํฐ ๋ฐ ๊ธฐ๋ฅ์ ์ฃผ๊ณ ๋ฐ๋ ์ธํฐํ์ด์ค |
HTTP Body | ์์ฒญ ์ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ์์ญ |
@RequestBody | HTTP Body๋ฅผ ์๋ฐ ๊ฐ์ฒด๋ก ๋ณํํด์ฃผ๋ Spring ์ด๋ ธํ ์ด์ |
required=false | Body๊ฐ ์์ด๋ ์์ฒญ์ ํ์ฉ, ๋์ฒ๋ฆฌ๋ก ์ ์ฐํ ๋์ ๊ฐ๋ฅ |