YoonC

REST? RESTful API?? λ³Έλ¬Έ

Develop/Node.js

REST? RESTful API??

μœ€νƒœν’ 2021. 3. 26. 16:27

 

πŸ’‘ Rest (Representational State Transfer)

μžμ›μ˜ 이름 (μžμ›μ˜ ν‘œν˜„) 으둜 ꡬ뢄해 ν•΄λ‹Ή μžμ›μ˜ μƒνƒœ(정보)λ₯Ό μ£Όκ³  λ°›λŠ” λͺ¨λ“ κ²ƒ.

μžμ›μ˜ ν‘œν˜„μ— μ˜ν•΄ μƒνƒœ 전달을 ν•˜λŠ” κ²ƒμœΌλ‘œ μ›Ήμ˜ μž₯점을 μ΅œλŒ€ν•œ ν™œμš©ν•˜λŠ” 아킀텍쳐

 

 

μžμ›μ˜ ν‘œν˜„?

 : ν•΄λ‹Ή SWκ°€ κ΄€λ¦¬ν•˜λŠ” 것듀을 ν‘œν˜„ν•˜κΈ° μœ„ν•œ 이름

 

μƒνƒœ(정보) 전달?

 : 데이터가 μš”μ²­λ˜μ–΄μ§€λŠ” μ‹œμ μ—μ„œμ˜ μžμ›μ˜ μƒνƒœ(정보)λ₯Ό 전달 (JSON, XML 톡해)

 

✏️ ꡬ체적인 κ°œλ…

 : HTTP URIλ₯Ό 톡해 μžμ›μ„ λͺ…μ‹œν•˜κ³  HTTP Method (GET, POST ..)λ₯Ό 톡해 

   ν•΄λ‹Ή μžμ›μ— λŒ€ν•œ CRUD Operation을 μ μš©ν•¨

   

   πŸ‘€  μ΄λ•Œ CRUD -> (Create, Read, Update, Delete, Head)

                                      POST      GET       PUT       DELETE   HEAD

 

κ΅¬μ„±μš”μ†Œ

   - μžμ› (Resource) : = URI ( Uniform Resource Identifier ) ν†΅ν•©μžμ›μ‹λ³„μž

               λͺ¨λ“  μžμ›μ—λŠ” κ³ μœ ν•œ IDκ°€ 있으며 이 μžμ›μ€ μ„œλ²„μ— 쑴재 ex> /groups/:group_id 

               λ”°λΌμ„œ clientλŠ” URIλ₯Ό μ΄μš©ν•΄ μžμ›μ„ μ§€μ •ν•œ ν›„ ν•΄λ‹Ή μžμ› μƒνƒœμ— λŒ€ν•œ μ‘°μž‘μ„ μ„œλ²„μ— μš”μ²­

   - ν–‰μœ„ (Verb) : HTTP Method (GET, POST, PUT, DELETE λ“±)

   - ν‘œν˜„ :  clientκ°€ μžμ›μ˜ μƒνƒœμ— λŒ€ν•œ μ‘°μž‘μ„ μš”μ²­ν•˜λ©΄ μ„œλ²„λŠ” μ μ ˆν•œ 응닡을 보냄

       

 

REST API 섀계 κΈ°λ³Έ κ·œμΉ™

 

  1. URIλŠ” μ •λ³΄μ˜ μžμ›μ„ ν‘œν˜„

      - resuorceλŠ” λͺ…사, μ†Œλ¬Έμž μ„ ν˜Έ

 

  2. μžμ›μ— λŒ€ν•œ ν–‰μœ„λŠ” HTTP Method둜 ν‘œν˜„

      - URIμ—λŠ” HTTP Method λ“€μ–΄κ°€λ©΄ X

      - URI에 ν–‰μœ„μ— λŒ€ν•œ 동사 ν‘œν˜„μ΄ λ“€μ–΄κ°€λ©΄ μ•Šλ¨

 

  3. μŠ¬λž˜μ‹œ κ΅¬λΆ„μž(/)λŠ” 계측 관계λ₯Ό λ‚˜νƒ€λ‚΄λŠ”λ° μ‚¬μš©

 

  4. URI λ§ˆμ§€λ§‰ 문자둜 μŠ¬λž˜μ‹œ ν¬ν•¨ν•˜μ§€ μ•Šμ„κ²ƒ  

     - URI에 ν¬ν•¨λ˜λŠ” λͺ¨λ“  κΈ€μžλŠ” λ¦¬μ†ŒμŠ€μ˜ μœ μΌν•œ μ‹λ³„μžλ‘œ μ‚¬μš©λ˜μ–΄μ•Ό ν•˜λ―€λ‘œ ν˜Όλ™μ£Όμ§€ μ•ŠκΈ° μœ„ν•΄

 

  5. _을 μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©° -λŠ” 가독성을 λ†’μ΄λŠ”λ° 씀

 

πŸ‘©πŸ»‍πŸ’» μ˜ˆμ‹œ)
CRUD HTTP Verbs Route
resourceλ“€μ˜ λͺ©λ‘ ν‘œμ‹œ  GET /resource
resource ν•˜λ‚˜μ˜ λ‚΄μš© ν‘œμ‹œ  GET /resource/:id
resourceλ₯Ό ν•˜λ‚˜ μƒμ„±  POST /resource
resourceλ₯Ό μ‚­μ œ DELETE /resource/:id

 

응닡 μƒνƒœ μ½”λ“œ )
  • 1xx : 전솑 ν”„λ‘œν† μ½œ μˆ˜μ€€μ˜ 정보 κ΅ν™˜
  • 2xx : ν΄λΌμ–΄μΈνŠΈ μš”μ²­μ΄ μ„±κ³΅μ μœΌλ‘œ μˆ˜ν–‰λ¨
  • 3xx : ν΄λΌμ΄μ–ΈνŠΈλŠ” μš”μ²­μ„ μ™„λ£Œν•˜κΈ° μœ„ν•΄ 좔가적인 행동을 μ·¨ν•΄μ•Ό 함
  • 4xx : ν΄λΌμ΄μ–ΈνŠΈμ˜ 잘λͺ»λœ μš”μ²­
  • 5xx : μ„œλ²„μͺ½ 였λ₯˜λ‘œ μΈν•œ μƒνƒœμ½”λ“œ
Comments