Web/HTTP

HTTP API 섀계 μ˜ˆμ‹œ

 

πŸ“’ HTTP API - μ»¬λ ‰μ…˜

πŸ“Œ POST 기반 등둝

πŸ“μ˜ˆ) νšŒμ› 관리 API 제곡

• νšŒμ› λͺ©λ‘ /members -> GET 

• νšŒμ› λ“±λ‘ /members -> POST 

• νšŒμ› μ‘°νšŒ /members/{id} -> GET 

• νšŒμ› μˆ˜μ • /members/{id} -> PATCH, PUT, POST
• νšŒμ› μ‚­μ œ /members/{id} -> DELETE

 

*주의! νšŒμ› μˆ˜μ •μ‹œ PUT은 νšŒμ› 정보λ₯Ό ν•˜λ‚˜λ„ 빠짐없이 μ „λΆ€ λ‹€ 전솑해야 ν•˜λ―€λ‘œ PATCH!!

* 단, κ²Œμ‹œκΈ€ μˆ˜μ •μ˜ κ²½μš°λŠ” 닀름. κ²Œμ‹œκΈ€μ€ λΆ€λΆ„ μˆ˜μ •μ΄ μ•„λ‹ˆλΌ κ²Œμ‹œκΈ€ 전체λ₯Ό ν΄λΌμ΄μ–ΈνŠΈκ°€ λ‹€μ‹œ μ„œλ²„μ— λ³΄λ‚΄λ‹ˆκΉŒ PUT!

 

이것저것 κ·Έλƒ₯ λ‹€ μ• λ§€ν•˜λ©΄ POST μ“°μ…ˆ

 

πŸ“ POST - μ‹ κ·œ μžμ› 등둝 νŠΉμ§•

1. ν΄λΌμ΄μ–ΈνŠΈκ°€ "username": "hello", "age": 22 λΌλŠ” μ •λ³΄λ‘œ POST μš”μ²­μ„ 보냄. (μ΄λ•Œ ν΄λΌμ΄μ–ΈνŠΈλŠ” 등둝될 λ¦¬μ†ŒμŠ€μ˜ URIλ₯Ό λͺ¨λ¦„.)

2. μ„œλ²„κ°€ μƒˆλ‘œ λ“±λ‘λœ λ¦¬μ†ŒμŠ€ URIλ₯Ό μƒμ„±ν•΄μ€Œ. μ„œλ²„κ°€ μ•Œμ•„μ„œ λ§Œλ“€μ–΄μ„œ μ„œλ²„κ°€ κ΄€λ¦¬ν•˜κ³  μ„œλ²„κ°€ νŒλ‹¨ν•΄!

->

πŸ“ μ»¬λ ‰μ…˜(Collection): μ„œλ²„κ°€ κ΄€λ¦¬ν•˜λŠ” λ¦¬μ†ŒμŠ€ 디렉토리. μœ„μ˜ 파일 관리 μ‹œμŠ€ν…œμ˜ μ˜ˆμ‹œμ—μ„œ μŠ€ν† μ–΄λŠ” /members

 

 

πŸ“’ HTTP API - μŠ€ν† μ–΄

πŸ“Œ PUT 기반 등둝

πŸ“μ˜ˆ) 파일 관리 μ‹œμŠ€ν…œ

• νŒŒμΌ λͺ©λ‘ /files -> GET 

• νŒŒμΌ μ‘°νšŒ /files/{filename} -> GET 

• νŒŒμΌ λ“±λ‘ /files/{filename} -> PUT 

• νŒŒμΌ μ‚­μ œ /files/{filename} -> DELETE
• 파일 λŒ€λŸ‰ 등둝 /files -> POST (*등둝할 λ•Œ PUT을 μ‚¬μš©ν•˜λ―€λ‘œ POSTλŠ” μž„μ˜μ˜λ‘œ μ§€μ •)

 

πŸ“ PUT- μ‹ κ·œ μžμ› 등둝 νŠΉμ§•

1. ν΄λΌμ΄μ–ΈνŠΈκ°€ λ¦¬μ†ŒμŠ€ URIλ₯Ό μ•Œκ³  있고 직접 지정함.

즉, νŒŒμΌμ„ 등둝할 λ•Œ {filename}을 λ„£μ–΄μ€˜μ•Ό 함. 예λ₯Ό λ“€μ–΄ PUT/files/star.jpg

ν΄λΌμ΄μ–ΈνŠΈκ°€ 직접 μ§€μ •ν•΄μ„œ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ•Œμ•„μ„œ 관리해!

->

πŸ“ μŠ€ν† μ–΄ (Store): ν΄λΌμ΄μ–ΈνŠΈκ°€ κ΄€λ¦¬ν•˜λŠ” λ¦¬μ†ŒμŠ€ μ €μž₯μ†Œ. μœ„μ˜ 파일 관리 μ‹œμŠ€ν…œμ˜ μ˜ˆμ‹œμ—μ„œ μŠ€ν† μ–΄λŠ” /files

 

일반적으둜 POST 기반 등둝 방식이 μ“°μž„.

 

 

πŸ“’ HTTP FORM μ‚¬μš©

πŸ“Œμ›Ή νŽ˜μ΄μ§€ νšŒμ› 관리 

πŸ“GET, POST만 지원

λ¬Όλ‘  AJAX 등을 μ‚¬μš©ν•΄μ„œ ν•΄κ²° κ°€λŠ₯ν•˜μ§€λ§Œ 순수 HTML FORM만 μ‚¬μš©ν•΄μ„œ GET, POST만 μ‚¬μš©κ°€λŠ₯ν•˜λ‹€λ©΄?

• νšŒμ› λͺ©λ‘ /members -> GET 

• νšŒμ› λ“±λ‘ νΌ /members/new -> GET 

• νšŒμ› λ“±λ‘ /members/new, /members -> POST 

• νšŒμ› μ‘°νšŒ /members/{id} -> GET 

• νšŒμ› μˆ˜μ • νΌ /members/{id}/edit -> GET 

• νšŒμ› μˆ˜μ • /members/{id}/edit, /members/{id} -> POST
• νšŒμ› μ‚­μ œ /members/{id}/delete -> POST

 

* νšŒμ› 등둝(μˆ˜μ •) 폼과 νšŒμ› 등둝(μˆ˜μ •) URIλ₯Ό λ§žμΆ°μ£ΌλŠ” 것이 쒋은듯 μ•„λ§ˆ..? μ‚¬λžŒλ§ˆλ‹€ μŠ€νƒ€μΌμ΄ λ‹€λ₯΄λ‹€κ³  ν•˜κΈ΄ ν•˜μ§€λ§Œ.

 

πŸ“ 컨트둀 URI(컨트둀러)

* λ¬Έμ„œ, μ»¬λ ‰μ…˜, μŠ€ν† μ–΄λ‘œ ν•΄κ²°ν•˜κΈ° μ–΄λ €μš΄ μΆ”κ°€ ν”„λ‘œμ„ΈμŠ€ μ‹€ν–‰

* GET, POSTλ§ŒμœΌλ‘œλŠ” μ œμ•½μ΄ μžˆμ„ 수 있음. 이 경우 μ–΄μ©” 수 없이 λ™μ‚¬λ‘œ 된 λ¦¬μ†ŒμŠ€ 경둜 μ‚¬μš©ν•΄μ•Ό 함.

* POST의 /new, /edit, /delete λ“±λ“±.

* μ‹€λ¬΄μ—μ„œλŠ” 이상적인 λΆ€λΆ„κ³Ό 닀름. μ• λ§€ν•œ 뢀뢄이 λ§Žμ•„μ„œ 많이 μ‚¬μš©λœλ‹€κ³  함. κ·Έλ ‡μ§€λ§Œ μ–΄λ””κΉŒμ§€λ‚˜ λŒ€μ²΄μ œμΌ 뿐~!

 

πŸ“URI 넀이밍 μ°Έκ³  링크

https://restfulapi.net/resource-naming

 

 

 

'Web > HTTP' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

HTTP 헀더 - 일반 헀더  (0) 2022.01.11
HTTP μƒνƒœ μ½”λ“œ  (0) 2022.01.11
HTTP λ©”μ„œλ“œμ™€ ν™œμš©  (0) 2022.01.10
HTTP κΈ°λ³Έ κ°œλ…  (0) 2022.01.10
URI와 μ›Ή λΈŒλΌμš°μ € μš”μ²­ 흐름  (0) 2022.01.10