CS/HTTP

[HTTP] : RESTful API λž€ 무엇인지 ?

κΆŒμŠΎν–„ 2023. 7. 13. 22:05
RESTful API λž€ ?

μ›Ή μ„œλΉ„μŠ€λ₯Ό μœ„ν•œ μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ μŠ€νƒ€μΌ.

RESTful API λŠ” μžμ›(데이터)을 κ³ μœ ν•œ URI둜 ν‘œν˜„μ„ ν•˜κ³ ,
μ—¬λŸ¬ HTTP λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μžμ›μ— λŒ€ν•œ μ‘°μž‘μ„ μˆ˜ν–‰ν•˜λŠ” λ°©μ‹μœΌλ‘œ λ™μž‘ν•œλ‹€.

μžμ›μ΄λž€ ?

= 데이터.

λ°μ΄ν„°λŠ” κ³ μœ ν•œ URI둜 μ‹λ³„λœλ‹€.

'/posts'
'/posts/:_id'
'/comments/:postId'
'/comments/:_id'
 

μœ„μ™€ 같이 ν•΄λ‹Ήν•˜λŠ” κ³ μœ ν•œ URIλ₯Ό κ°€μ§€κ³  μžμ› (데이터)에 접근이 κ°€λŠ₯ν•˜λ‹€.

HTTP λ©”μ„œλ“œ
 

λ‚΄κ°€ μ‚¬μš©ν•œ HTTP λ©”μ„œλ“œλŠ” μ•„λž˜ 4개의 λ©”μ„œλ“œμ΄λ‹€.
κ°€μž₯ λΉˆλ²ˆν•˜κ²Œ μ‚¬μš©λ˜λŠ” λŒ€ν‘œμ μΈ λ©”μ„œλ“œμ΄κΈ°λ„ ν•˜λ‹€.

  • POST - 데이터 생성 (Create)

λ‚˜λŠ” POST λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν• λ•ŒλŠ”, /postsλΌλŠ” URI에 μ ‘κ·Όν•΄μ„œ μ‚¬μš©ν–ˆλ‹€.

  • GET - 데이터 쑰회 (Read)

GET λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν• λ•ŒλŠ” /posts URI둜 전체 데이터λ₯Ό μ‘°νšŒν•˜κ±°λ‚˜.
/posts/:_id URIλ₯Ό 톡해 νŠΉμ • λ°μ΄ν„°μ˜ id값에 μ ‘κ·Όν•΄μ„œ ν•΄λ‹Ή μžμ›λ§Œ μ‘°νšŒν•˜κΈ°λ„ ν•˜μ˜€λ‹€.

  • PUT - 데이터 μˆ˜μ • (Update)

PUT λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν• λ•ŒλŠ” νŠΉμ • μžμ›μ˜ _id 값에 μ ‘κ·Όν•΄μ„œ μžμ›μ„ μˆ˜μ •ν–ˆλ‹€.

  • DELETE - 데이터 μ‚­μ œ (Delete)

DELETE λ©”μ„œλ“œλ„ ν•˜λ‚˜μ˜ 값에 μ ‘κ·Όν•΄μ„œ μ‚¬μš©ν–ˆκΈ° λ•Œλ¬Έμ— μˆ˜μ •κ³Ό, 데이터 μƒμ„Έμ‘°νšŒ URI와 λ™μΌν•˜λ‹€.

URI λ””μžμΈ

RESTful APIμ—μ„œ URIλŠ” 데이터λ₯Ό λ‚˜νƒ€λ‚΄λŠ”λ° μ‚¬μš©λœλ‹€.
계측적인 ꡬ쑰λ₯Ό κ°€μ§ˆ 수 있기 λ•Œλ¬Έμ— ν•΄λ‹Ή λ°μ΄ν„°μ™€μ˜ 관계λ₯Ό ν‘œν˜„ν•  수 μžˆλ‹€.

μ˜ˆμ‹œ ) /posts/:345bhbsdfh7732fh λŠ” :뒀에 μœ„μΉ˜ν•œ paramsλ₯Ό κ°€μ§€κ³  ν•΄λ‹Ή value 값을 κ°€μ§€λŠ” 데이터에 접근이 κ°€λŠ₯ν•œ 것이닀.
νŠΉμ • λ°μ΄ν„°μ˜ μˆ˜μ •κ³Ό μ‚­μ œ 및 상세 쑰회λ₯Ό μœ„μ™€ 같이 params μžλ¦¬μ— ν•΄λ‹Ή μžμ›μ˜ 고유 id 값을 value 둜 λ°›μ•„μ„œ μ ‘κ·Όν–ˆλ‹€.

데이터 포맷

RESTful APIλŠ” λ‹€μ–‘ν•œ 데이터 포맷을 μ§€μ›ν•œλ‹€κ³  ν•œλ‹€.

λŒ€ν‘œμ μœΌλ‘œ κ°€μž₯ 일반적인 JSON ν˜•νƒœλΆ€ν„° λͺ‡ 번 λ“€μ–΄λ³Έ XML, CSV λ˜λŠ” YAML 등도 μ‚¬μš©λ  수 μžˆλ‹€κ³  ν•œλ‹€.

ν΄λΌμ΄μ–ΈνŠΈ <------> μ„œλ²„λŠ” μ„ νƒν•œ 데이터 ν˜•νƒœλ₯Ό 기반으둜 데이터λ₯Ό μ£Όκ³  λ°›λŠ”λ‹€.

 

#RESTful_API #κ°œλ…μ •λ¦¬ #URI #params #res #req #HTTP #method
#POST #GET #PUT #DELETE #CRUD