rest - GANGNAM-JAVA/JAVA-STUDY GitHub Wiki
HTTP method
- GET
- ์์ฒญ๋ฐ์ URI์ ์ ๋ณด๋ฅผ ๊ฒ์ํ์ฌ ์๋ตํ๋ค
- ์๋ฒ์์ ๋ฆฌ์์ค๋ฅผ ๋ฌ๋ผ๊ณ ์์ฒญํ๊ธฐ ์ํด ์ฌ์ฉ
- POST
- ์์ฒญ๋ ๋ฆฌ์์ค๋ฅผ ์์ฑ(CREATE)ํ๋ค. ์๋ก ์์ฑ๋ ๋ฆฌ์์ค์ธ ๊ฒฝ์ฐ HTTP ํค๋ ํญ๋ชฉ 'Location : {URI}' ๋ฅผ ํฌํจํ์ฌ ์๋ตํด์ผ ํ๋ค.
- DELETE
- ์์ฒญ๋ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ ๊ฒ์ ์์ฒญํจ. (์์ ์ฑ ๋ฌธ์ ๋ก ๋๋ถ๋ถ์ ์๋ฒ์์ ๋นํ์ฑ)
- HTTP ๋ช ์ธ๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์์ง์ง ์๊ณ ์์ณฅ์ ๋ฌด์ํ๋ ๊ฒ์ ํ์ฉํ์ฌ ์ญ์ ์ํ์ ๋ํ ๋ณด์ฅ์ ํ์ง ๋ชปํ๋ค.
- HEAD
- GET๋ฐฉ์๊ณผ ๋์ผํ์ง๋ง, ์๋ต์ BODY๊ฐ ์๊ณ ์๋ต์ฝ๋์ HEAD๋ง ์๋ตํ๋ค.
- ์น์๋ฒ ์ ๋ณดํ์ธ, ํฌ์ค์ฒดํฌ, ๋ฒ์ ผํ์ธ, ์ต์ข ์์ ์ผ์ ํ์ธ๋ฑ์ ์ฉ๋๋ก ์ฌ์ฉ๋๋ค.
- PUT
- ์ผ๋ฐ์ ์ผ๋ก ๋ฆฌ์์ค ์์ (UPDATE)ํ ๋ ์ฌ์ฉํ๋ค.
- ์๋ฒ๊ฐ ์์ฒญ์ ๋ณธ๋ฌธ์ ๊ฐ์ง๊ณ ์์ฒญ URL์ ์ด๋ฆ๋๋ก ์ ๋ฆฌ์์ค๋ฅผ ๋ง๋ค๊ฑฐ๋, ์ด๋ฏธ URL์ด ์กด์ฌํ๋ค๋ฉด ๋ณธ๋ฌธ์ ์ฌ์ฉํด์ ๊ต์ฒดํ๋ค.
- PATCH
- PUT๊ณผ ์ ์ฌํ๊ฒ ์์ฒญ๋ ๋ฆฌ์์ค๋ฅผ ์์ (UPDATE)ํ ๋ ์ฌ์ฉํ๋ค.
- PUT์ ๊ฒฝ์ฐ ๋ฆฌ์์ค๋ฅผ ์ ์ฒด๋ฅผ ๊ฐฑ์ ํ๋ ์๋ฏธ์ง๋ง, PATCH๋ ํด๋น ๋ฆฌ์์ค์ ์ผ๋ถ๋ฅผ ๊ต์ฒดํ๋ ์๋ฏธ๋ก ์ฌ์ฉ.
- OPTIONS
- ์น์๋ฒ์์ ํน์ ๋ฆฌ์์ค์ ๋ํด ์ง์๋๋ ๋ฉ์๋์ ์ข ๋ฅ๋ฅผ ํ์ธํ ๊ฒฝ์ฐ ์ฌ์ฉ.
- TRACE
- ์๊ฒฉ์ง ์๋ฒ์ ๋ฃจํ๋ฐฑ ๋ฉ์์ง ํธ์ถํ๊ธฐ ์ํด ํ ์คํธ์ฉ์ผ๋ก ์ฌ์ฉ.
- ์์ฒญ์ด ๋ฐฉํ๋ฒฝ, ํ๋ฝ์, ๊ฒ์ดํธ์จ์ด ๋ฑ์ ๊ฑฐ์น ์ ์๋๋ฐ, ์๋ฒ์ ์์ ์ ์์ฒญ์ด ์ด๋ป๊ฒ ์์ ๋์ด ๋๋ฌํ๋์ง ํ์ธํ ์ ์๋ค.
POST vs PUT
PUT์ ์๋ณ์๋ฅผ ํฌํจํด์ผ ํ๋ค. ๊ผญ ์กด์ฌํ๋ ์๋ณ์์ผ ํ์๋ ์๊ณ , ์กด์ฌํ์ง ์๋ ์๋ณ์์ผ ๊ฒฝ์ฐ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ฒ ๋๋ค.
POST๋ก ๋์ผํ ์์ฒญ์ ๋ณด๋ด๋ฉด 2๊ฐ์ ์์์ ์์ฑํ๋ค. ๋ฐ๋ฉด, PUT์ผ๋ก ๋์ผํ ์์ฒญ์ 2๋ฒ ๋ณด๋ผ ๊ฒฝ์ฐ ์ฒซ ๋ฒ์งธ์ ๋ฆฌ์์ค๊ฐ ์์ฑ๋๊ณ , ๋ ๋ฒ์งธ์ ๋ฆฌ์์ค๊ฐ ๊ต์ฒด๋๋ค.
POST๋ ๋ฉฑ๋ฑ์ด ์๋๊ณ , PUT์ ๋ฉฑ๋ฑ์ด๋ค. (๋ฉฑ๋ฑ์ ํ ๋ฒ ์ ์ฉํ๋ ์ฌ๋ฌ ๋ฒ ์ ์ฉํ๋ ํญ์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ด๋ ๊ฒ์ ์๋ฏธ)
PUT vs PATCH
PUT์ ์์์ ์ ์ฒด๋ฅผ ๊ต์ฒดํ๊ธฐ ๋๋ฌธ์ ์์ ๋ด์ ๋ชจ๋ ํ๋๊ฐ ํ์ํ๋ค. ์ผ๋ถ ํ๋๋ง ์ ๋ฌํ ๊ฒฝ์ฐ, ๊ทธ ์ธ ํ๋๋ ๋น์ด ์๊ฒ ๋๊ฑฐ๋ ์ด๊ธฐ๊ฐ์ผ๋ก ๋ณ๊ฒฝ๋ ๊ฒ์ด๋ค. PATCH๋ ์์์ ๋ถ๋ถ์ ๊ต์ฒดํ๊ธฐ ๋๋ฌธ์ ๊ต์ฒดํ ํ๋๋ง ์ ๋ฌํ๋ฉด ๋๋ค.
PUT /members/1
{
name : "hoon",
age : 28,
}
PATCH /members/1
{
name : "jihoon"
}
์ฐธ๊ณ
- https://tools.ietf.org/html/rfc7231#section-4.3 (method)
- https://tools.ietf.org/html/rfc7231#section-8.1.3 (๋ฉฑ๋ฑ)
- https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html (method)
- https://multifrontgarden.tistory.com/245 (POST vs PUT)
- https://stackoverflow.com/questions/29092787/http-post-response-location-header-when-creating-multiple-resources (POST response location)
- https://papababo.tistory.com/269 (PUT vs PATCH)