04. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - HTTP API

2021. 5. 3. 14:50ยท ๐Ÿ’ป Computer Science

2021.05.03 - [BASIC] - 01. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - ์ธํ„ฐ๋„ท ๋„คํŠธ์›Œํฌ

2021.05.03 - [BASIC] - 02. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - URI

2021.05.03 - [BASIC] - 03. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - ๋ชจ๋“ ๊ฒƒ์ด HTTP

 

API URI ๊ณ ๋ฏผ

๋ฆฌ์†Œ์Šค๋ผ๋Š” ์˜๋ฏธ๋Š” ๋ญ˜๊นŒ?

ํšŒ์›์„ ๋“ฑ๋กํ•˜๊ณ  ์ˆ˜์ •,์กฐํšŒ ํ•˜๋Š”๊ฒŒ ๋ฆฌ์†Œ์Šค๋Š” ์•„๋‹ˆ๋‹ค

ํšŒ์›์ด๋ผ๋Š” ๊ฐœ๋… ์ž์ฒด๊ฐ€ ๋ฐ”๋กœ ๋ฆฌ์†Œ์Šค์ด๋‹ค. ๋‚˜๋Š” DB์— ์ €์žฅ๋˜์–ด์žˆ๋Š” ํ•œ ๋กœ์šฐ์˜ ๋ฐ์ดํ„ฐ๋ผ๊ณ  ์ดํ•ดํ•œ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ์‹๋ณ„ํ•˜๋Š”๊ฒŒ ์ข‹์„๊นŒ?

์ˆ˜์ •,์กฐํšŒ ํ•˜๋Š” ๊ฒƒ์„ ๋ชจ๋‘ ๋ฐฐ์ œํ•˜๊ณ  ํšŒ์›์ด๋ผ๋Š” ๋ฆฌ์†Œ์Šค๋งŒ ์‹๋ณ„ํ•œ๋‹ค.

-> ํšŒ์› ๋ฆฌ์†Œ์Šค๋ฅผ URI ๋งคํ•‘

 

API URI ์„ค๊ณ„

- ๋ฆฌ์†Œ์Šค๋งŒ์„ ์‹๋ณ„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— URI ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•œ๋‹ค.

- ๋ฆฌ์†Œ์Šค์™€ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ํ–‰์œ„๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค.

- ์—ฌ๊ธฐ์„œ ๋ฆฌ์†Œ์Šค(๋ช…์‚ฌ)๋Š” ํšŒ์›์„ ๋œปํ•˜๊ณ  

- ํ–‰์œ„(๋™์‚ฌ)๋Š” ์กฐํšŒ, ๋“ฑ๋ก, ์‚ญ์ œ, ๋ณ€๊ฒฝ์„ ๋œปํ•œ๋‹ค.

 

์˜ˆ)

ํšŒ์› ๋ชฉ๋ก ์กฐํšŒ /members

ํ•ด๋‹น ํšŒ์› ์กฐํšŒ /members/{id}

ํšŒ์› ๋“ฑ๋ก /members/{id}

ํšŒ์› ์ˆ˜์ • /members/{id}

ํšŒ์› ์‚ญ์ œ /members/{id}

 

HTTP ๋ฉ”์„œ๋“œ ์ข…๋ฅ˜

 

GET ๋ฆฌ์†Œ์Šค ์กฐํšŒ

์„œ๋ฒ„์— ์ „๋‹ฌํ•˜๊ณ  ์‹ถ์€ ๋ฐ์ดํ„ฐ๋ฅผ query๋ฅผ ํ†ตํ•ด ์ „๋‹ฌํ•œ๋‹ค.

๋ฉ”์‹œ์ง€ body๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ณณ์ด ๋งŽ๋‹ค.

 

POST ์š”์ฒญ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์ฃผ๋กœ ๋“ฑ๋ก์— ์‚ฌ์šฉ

๋ฉ”์‹œ์ง€ ๋ฐ”๋””๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋กœ ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.

์„œ๋ฒ„๋Š” ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ฃผ๋กœ ์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ ๊ทœ ๋ฆฌ์†Œ์Šค ๋“ฑ๋ก, ํ”„๋กœ์„ธ์Šค ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉํ•œ๋‹ค.

201 Created๋ฅผ ๋ณด๋‚ด๋ฉด์„œ (200 Ok ๋„ ๋ฌด๊ด€) ์ž์›์ด ์ƒ์„ฑ๋œ URI๋ฅผ return ํ•ด์ค€๋‹ค. -> ๋‚˜์ค‘์— ํ”„๋กœ์ ํŠธํ• ๋•Œ ํ™•์ธํ•ด๋ด๋„ ์ข‹์„๊ฒƒ ๊ฐ™๋‹ค

 

PUT ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€์ฒด, ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์œผ๋ฉด ์ƒ์„ฑ

๋ฆฌ์†Œ์Šค๋ฅผ ์™„์ „ํžˆ ๋Œ€์ฒดํ•œ๋‹ค.

๋ฆฌ์†Œ์Šค๊ฐ€ == null ? ์ƒ์„ฑ : ๋Œ€์ฒด

๋งŒ์•ฝ ๊ฐ’์ด ๊ฐ™์•„๋„ ํ•„๋“œ ๊ฐฏ์ˆ˜๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด ์š”์ฒญํ•˜๋Š” ๊ฐ’ ๊ทธ๋Œ€๋กœ ๋ฎ์–ด์“ฐ๊ธฐํ•œ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ตฌ์ฒด์ ์ธ ๋ฆฌ์†Œ์Šค ์œ„์น˜๋ฅผ ์•Œ๊ณ  ์ง€์ •ํ•œ๋‹ค.

 

PATCH ๋ฆฌ์†Œ์Šค ๋ถ€๋ถ„ ๋ณ€๊ฒฝ

๊ทธ๋ ‡๋‹ค๋ฉด ํšŒ์› ์ˆ˜์ • ์ผ ๋•Œ PATCH๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ๋งž์„๊นŒ? ์—ฌํƒœ PUT์œผ๋กœ ์•Œ๊ณ  ์žˆ์—ˆ๋‹ค.

PUT์ด ํ•ด๋‹น ์ž์›์˜ ์ „์ฒด๋ฅผ ๊ต์ฒดํ•˜๋Š” ์˜๋ฏธ๋ฅผ ์ง€๋‹ˆ๋Š” ๋Œ€์‹ , PATCH๋Š” ์ผ๋ถ€๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค๋Š” ์˜๋ฏธ๋ฅผ ์ง€๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๊ทผ update ์ด๋ฒคํŠธ์—์„œ PUT๋ณด๋‹ค ๋” ์˜๋ฏธ์ ์œผ๋กœ ์ ํ•ฉํ•˜๋‹ค๊ณ  ํ‰๊ฐ€๋ฐ›๊ณ  ์žˆ๋‹ค. ๋˜ํ•œ PUT์˜ ๊ฒฝ์šฐ๋Š” ๋ฉฑ๋“ฑํ•˜์ง€๋งŒ, PATCH์˜ ๊ฒฝ์šฐ๋Š” ๋ฉฑ๋“ฑํ•˜์ง€ ์•Š๋‹ค. PUT์€ ์ „์ฒด ์ž์›์„ ์—…๋ฐ์ดํŠธ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผ ์ž์›์— ๋Œ€ํ•ด์„œ ๋™์ผํ•˜๊ฒŒ PUT์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ ๋ฉฑ๋“ฑํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋œ๋‹ค. ๋ฐ˜๋ฉด PATCH๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒฝ์šฐ ์ž์›์˜ ์ผ๋ถ€๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉฑ๋“ฑ์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค.
์ถœ์ฒ˜: https://javaplant.tistory.com/18 [์ž๋ฐ”๊ณต์ž‘์†Œ]

 

DELETE ๋ฆฌ์†Œ์Šค ์‚ญ์ œ

HEAD GET๊ณผ ๋™์ผํ•˜์ง€๋งŒ ๋ฉ”์‹œ์ง€ ๋ถ€๋ถ„์„ ์ œ์™ธํ•˜๊ณ , ์ƒํƒœ ์ค„๊ณผ ํ—ค๋”๋งŒ ๋ฐ˜ํ™˜

OPTIONS ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ํ†ต์‹  ๊ฐ€๋Šฅ ์˜ต์…˜(๋ฉ”์„œ๋“œ)์„ ์„ค๋ช… (CORS ์—์„œ ์‚ฌ์šฉ)

CORS (Cross-Origin Resource Sharing)์ด ๋ญ์ง€?

์ž์› ์š”์ฒญ ์ถœ์ฒ˜๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฑด๋ฐ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋ธ”๋กœ๊ทธ์— ์—„์ฒญ ์ž์„ธํ•˜๊ฒŒ ๋‚˜์™€์žˆ๋‹ค!

evan-moon.github.io/2020/05/21/about-cors/

 

CONNECT ๋Œ€์ƒ ์ž์›์œผ๋กœ ์‹๋ณ„๋˜๋Š” ์„œ๋ฒ„์— ๋Œ€ํ•œ ํ„ฐ๋„์„ ์„ค์ •

TRACE ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ ๋ฉ”์‹œ์ง€ ๋ฃจํ”„๋ฐฑ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰(๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ)

 

 

HTTP ๋ฉ”์„œ๋“œ์˜ ์†์„ฑ

 

- ์•ˆ์ „(Safe Method)

ํ˜ธ์ถœํ•ด๋„ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

- ๋ฉฑ๋“ฑ(Idempotent)

ํ•œ ๋ฒˆ ํ˜ธ์ถœํ•˜๋“  ๋‘ ๋ฒˆ ํ˜ธ์ถœํ•˜๋“  100๋ฒˆ ํ˜ธ์ถœํ•˜๋“  ๊ฒฐ๊ณผ๊ฐ€ ๋˜‘๊ฐ™๋‹ค.

GET : ๋ช‡๋ฒˆ ์กฐํšŒํ•˜๋“  ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ์กฐํšŒ๋œ๋‹ค.

PUT : ๊ฒฐ๊ณผ๋ฅผ ๋Œ€์ฒผํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ™์€ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•ด๋„ ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ๊ฐ™๋‹ค.

DELETE : ๊ฒฐ๊ณผ๋ฅผ ์‚ญ์ œํ•œ๋‹ค. ๊ฐ™์€ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•ด๋„ ์‚ญ์ œ๋œ ๊ฒฐ๊ณผ๋Š” ๋˜‘๊ฐ™๋‹ค.

POST : ๋ฉฑ๋“ฑ์ด ์•„๋‹ˆ๋‹ค. ๋‘๋ฒˆ ํ˜ธ์ถœํ•˜๋ฉด ๊ฐ™์€ ๊ฒฐ์ œ๊ฐ€ ์ค‘๋ณตํ•ด์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ฉฑ๋“ฑ์˜ ํ™œ์šฉ : ์ž๋™ ๋ณต๊ตฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜ -> ๋ฉฑ๋“ฑ์ด ๊ฐ€๋Šฅํ•œ METHOD์—์„œ ์—๋Ÿฌ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ์ž๋™์œผ๋กœ ์žฌ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค.

 

- ์บ์‹œ๊ฐ€๋Šฅ(Cashable)

์ด๋ฏธ ๋ฐ›์€ ํŒŒ์ผ์„ ๋‹ค์‹œ ๋ฐ›์ง€ ์•Š๋„๋ก localPC ์›น๋ธŒ๋ผ์šฐ์ € ๋‚ด๋ถ€์— ์ €์žฅํ•œ๋‹ค.(์บ์‹œ ํ•œ๋‹ค.)

 

GET, HEAD ,POST, PATCH๊ฐ€ ์บ์‹œ ๊ฐ€๋Šฅํ•˜๋‹ค.

์‹ค๋ฌด์—์„œ๋Š” GET,HEAD ์ •๋„๋งŒ ์บ์‹œ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. POST, PATCH๋Š” ๋ณธ๋ฌธ ๋‚ด์šฉ๊นŒ์ง€ ์บ์‹œ ํ‚ค ๋กœ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š”๋ฐ ๊ตฌํ˜„์ด ์‰ฝ์ง€ ์•Š๋‹ค.

 

 

๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ’ป Computer Science' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

06. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - HTTP ์ƒํƒœ์ฝ”๋“œ ์†Œ๊ฐœ  (0) 2021.05.04
05. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก  (0) 2021.05.04
03. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - ๋ชจ๋“ ๊ฒƒ์ด HTTP  (0) 2021.05.03
02. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - URI  (0) 2021.05.03
01. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - ์ธํ„ฐ๋„ท ๋„คํŠธ์›Œํฌ  (0) 2021.05.03
'๐Ÿ’ป Computer Science' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • 06. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - HTTP ์ƒํƒœ์ฝ”๋“œ ์†Œ๊ฐœ
  • 05. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก
  • 03. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - ๋ชจ๋“ ๊ฒƒ์ด HTTP
  • 02. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - URI
์• ์ •์“ฐ
์• ์ •์“ฐ
์• ์ •์“ฐ
์• ์ •์ฝ”๋”ฉ ๐Ÿ’ป
์• ์ •์“ฐ
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (93)
    • ๐Ÿง  MIND (0)
    • ๐Ÿ“ ํšŒ๊ณ  (5)
    • โš™๏ธ ๋ฐฐํฌ ๋ฐ ์ธํ”„๋ผ (2)
    • ๐Ÿ—‚๏ธ DataBase (1)
      • QUERY (1)
    • ๐Ÿ’ป Computer Science (12)
    • ๐ŸŒ WEB (62)
      • HTML,CSS (0)
      • Kotlien (1)
      • JAVA (20)
      • JavaScript (3)
      • Spring (16)
      • Thymeleaf (2)
      • Node.js (1)
      • React (2)
      • SETTING (3)
      • JPA (11)
    • ๐Ÿœ TESTING (3)
    • ๊ธฐํƒ€ (4)
    • ์—๋Ÿฌ๋ชจ์Œ (4)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • spring-boot
  • Spring
  • ๊ฐœ๋ฐœ์žํšŒ๊ณ 
  • rdsํŒŒ๋ผ๋ฏธํ„ฐ
  • ArgumentCaptor
  • ํšŒ๊ณ 
  • ์ฝ”ํ…Œ
  • ๋™์ ํ”„๋ก์‹œ
  • ๋ฉ”์„œ๋“œํ…Œ์ŠคํŠธ
  • ํŒŒ์ด์ฌ
  • ๋ฐฑ์ค€
  • QueryDSL
  • ๊ฐœ๋ฐœ์ž
  • ์ธํ„ฐ๋ทฐ
  • JPA
  • Til
  • Java
  • max_digest_length
  • null์ œ์™ธ
  • Setting
  • JWT
  • XSSFWorkbook
  • ๊ธฐ์ดˆ
  • 6์›”ํšŒ๊ณ 
  • Gson null
  • ์ž๋ฐ”
  • enum
  • ์ง๋ ฌํ™”
  • ์„œ๋น„์Šคํ…Œ์ŠคํŠธ
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.v4.2.1
์• ์ •์“ฐ
04. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - HTTP API
์ƒ๋‹จ์œผ๋กœ

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

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.