๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ Post๋ฅผ ๋ง์ด ์ฐ๋๊ฐ?!
๋ฐ์ ํ๋์ธ๋ค์ ์ํ ํ์ค์์ฝ
DB๋ก ๋ฐ์ง๋ฉด GET์ SELECT ์ ๊ฐ๊น๊ณ , POST๋ Create ์ ๊ฐ๊น๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
GET ๊ณผ POST ๋ HTTP ๋ฉ์๋๋ก ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฌด์ธ๊ฐ๋ฅผ ์์ฒญํ ๋ ์ฌ์ฉํ๋ค.
2019/06/01 - [IT ์ ๋ณด ๋ก๊ทธ์บฃ/CS] - [๋คํธ์ํฌ] http ๋
[๋คํธ์ํฌ] http ๋
๊ธฐ๋ณธ์ ์ผ๋ก ๋คํธ์ํฌ ํต์ ์ ํ ๋ ์ฒ์ ์ ํ๋๊ฒ http ํต์ ์ด๋ค. ๊ฐ๋ฐ์๊ฐ ์๋๋๋ผ๋ http๋ ๋ง์ด ๋ฃ๋ ์ฉ์ด์ผ ์ ๋๋ก ์ฐ๋ฆฌ๊ฐ ๋ง์ด ์ ํ๊ณ ์๊ณ , ์ค์ํ๋ค. ๋ด๊ฐ ์ฌ์ฉํ๋ ๊ธฐ์ ์ด ์ต์ํ ์ด๋ค ๊ฑด์ง, ์ ์ฌ์ฉํ๋..
noahlogs.tistory.com
GET ์ด๋?
GET ์ ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ์ด๋ ํ ๋ฆฌ์์ค๋ก ๋ถํฐ ์ ๋ณด๋ฅผ ์์ฒญํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฉ์๋์ด๋ค.
์๋ฅผ๋ค๋ฉด ๊ฒ์ํ์ ๊ฒ์๋ฌผ์ ์กฐํํ ๋ ์ธ ์ ์๋ค.
GET์ ํตํ ์์ฒญ์ URL ์ฃผ์ ๋์ ํ๋ผ๋ฏธํฐ๋ก ํฌํจ๋์ด ์ ์ก๋๋ฉฐ, ์ด ๋ถ๋ถ์ ์ฟผ๋ฆฌ ์คํธ๋ง (query string) ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋ฐฉ์์ URL ๋์ " ? " ๋ฅผ ๋ถ์ด๊ณ ๊ทธ๋ค์ ๋ณ์๋ช 1=๊ฐ1&๋ณ์๋ช 2=๊ฐ2... ํ์์ผ๋ก ์ด์ด ๋ถ์ด๋ฉด ๋๋ค.
์๋ฅผ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ด๋ค.
www.example.com/show?name1=value1&name2=value2
์๋ฒ์์๋ name1 ๊ณผ name2 ๋ผ๋ ํ๋ผ๋ฏธํฐ ๋ช ์ผ๋ก ๊ฐ๊ฐ value1 ๊ณผ value2 ์ ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ ๋ฌ ๋ฐ์ ์ ์๋ค.
GET์ ํน์ง
- GET ์์ฒญ์ ์บ์๊ฐ ๊ฐ๋ฅํ๋ค.
- : GET์ ํตํด ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ ๋ ์น ์บ์๊ฐ ์์ฒญ์ ๊ฐ๋ก์ฑ ์๋ฒ๋ก๋ถํฐ ๋ฆฌ์์ค๋ฅผ ๋ค์ ๋ค์ด๋ก๋ํ๋ ๋์ ๋ฆฌ์์ค์ ๋ณต์ฌ๋ณธ์ ๋ฐํํ๋ค. HTTP ํค๋์์ cache-control ํค๋๋ฅผ ํตํด ์บ์ ์ต์
์ ์ง์ ํ ์ ์๋ค.
- GET ์์ฒญ์ ๋ธ๋ผ์ฐ์ ํ์คํ ๋ฆฌ์ ๋จ๋๋ค.
- GET ์์ฒญ์ ๋ถ๋งํฌ ๋ ์ ์๋ค.
- GET ์์ฒญ์ ๊ธธ์ด ์ ํ์ด ์๋ค.
- : GET ์์ฒญ์ ๊ธธ์ด ์ ํ์ ํ์ค์ด ๋ฐ๋ก ์๋๊ฑด ์๋๊ณ ๋ธ๋ผ์ฐ์ ๋ง๋ค ์ ํ์ด ๋ค๋ฅด๋ค๊ณ ํ๋ค.
- GET ์์ฒญ์ ์ค์ํ ์ ๋ณด๋ฅผ ๋ค๋ฃจ๋ฉด ์๋๋ค. ( ๋ณด์ )
- : GET ์์ฒญ์ ํ๋ผ๋ฏธํฐ์ ๋ค ๋
ธ์ถ๋์ด ๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ต์ํ์ ๋ณด์ ์์์ด๋ผ ์๊ฐํ์.
- GET์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ๋๋ง ์ฌ์ฉ ๋๋ค.
POST ๋?
POST๋ ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋ ์ฌ์ฉ ๋๋ ๋ฉ์๋๋ค. ์๋ฅผ๋ค๋ฉด ๊ฒ์ํ์ ๊ฒ์๊ธ์ ์์ฑํ๋ ์์ ๋ฑ์ ํ ๋ ์ฌ์ฉํ ๋๋ค.
POST๋ ์ ์กํ ๋ฐ์ดํฐ๋ฅผ HTTP ๋ฉ์์ง body ๋ถ๋ถ์ ๋ด์์ ์๋ฒ๋ก ๋ณด๋ธ๋ค. ( body ์ ํ์ ์ Content-Type ํค๋์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ค.)
GET์์ URL ์ ํ๋ผ๋ฏธํฐ๋ก ๋ณด๋๋ name1=value1&name2=value2 ๊ฐ body์ ๋ด๊ฒจ ๋ณด๋ด์ง๋ค ์๊ฐํ๋ฉด ๋๋ค.
POST ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ๊ธธ์ด ์ ํ์ด ๋ฐ๋ก ์์ด ์ฉ๋์ด ํฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋ ์ฌ์ฉํ๊ฑฐ๋ GET์ฒ๋ผ ๋ฐ์ดํฐ๊ฐ ์ธ๋ถ์ ์ผ๋ก ๋๋ฌ๋๋๊ฑด ์๋๋ผ์ ๋ณด์์ด ํ์ํ ๋ถ๋ถ์ ๋ง์ด ์ฌ์ฉ๋๋ค.
( ํ์ง๋ง ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ง ์์ผ๋ฉด body์ ๋ฐ์ดํฐ๋ ๊ฒฐ๊ตญ ๋ณผ ์ ์๋๊ฑด ๋๊ฐ๋ค. )
POST๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ์ก์ ๋ณดํต HTML form ์ ํตํด ์๋ฒ๋ก ์ ์ก๋๋ค.
POST์ ํน์ง
- POST ์์ฒญ์ ์บ์๋์ง ์๋๋ค.
- POST ์์ฒญ์ ๋ธ๋ผ์ฐ์ ํ์คํ ๋ฆฌ์ ๋จ์ง ์๋๋ค.
- POST ์์ฒญ์ ๋ถ๋งํฌ ๋์ง ์๋๋ค.
- POST ์์ฒญ์ ๋ฐ์ดํฐ ๊ธธ์ด์ ์ ํ์ด ์๋ค.
GET ๊ณผ POST ์ ์ฐจ์ด์
GET๊ณผ POST์ ํน์ง๋ง ๋ณด์๋ ์ฐจ์ด๊ฐ ๋๊ธดํ์ง๋ง ์ถ๊ฐ์ ์ผ๋ก ์ฐจ์ด์ ์ ์ ๋ฆฌํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- ์ฌ์ฉ๋ชฉ์ : GET์ ์๋ฒ์ ๋ฆฌ์์ค์์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ๋, POST๋ ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ์๋ก ์์ฑํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ ๋ ์ฌ์ฉํ๋ค.
- DB๋ก ๋ฐ์ง๋ฉด GET์ SELECT ์ ๊ฐ๊น๊ณ , POST๋ Create ์ ๊ฐ๊น๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
- ์์ฒญ์ body ์ ๋ฌด : GET ์ URL ํ๋ผ๋ฏธํฐ์ ์์ฒญํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ๋ณด๋ด๊ธฐ ๋๋ฌธ์ HTTP ๋ฉ์์ง์ body๊ฐ ์๋ค. POST ๋ body ์ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ๋ณด๋ด๊ธฐ ๋๋ฌธ์ ๋น์ฐํ HTTP ๋ฉ์์ง์ body๊ฐ ์กด์ฌํ๋ค.
- ๋ฉฑ๋ฑ์ฑ (idempotent) : GET ์์ฒญ์ ๋ฉฑ๋ฑ์ด๋ฉฐ, POST๋ ๋ฉฑ๋ฑ์ด ์๋๋ค.
๋ฉฑ๋ฑ์ด๋?
๋ฉฑ๋ฑ์ ์ฌ์ ์ ์ ์๋ ์ฐ์ฐ์ ์ฌ๋ฌ ๋ฒ ์ ์ฉํ๋๋ผ๋ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง์ง ์๋ ์ฑ์ง์ ์๋ฏธํ๋ค.
GET์ ๋ฆฌ์์ค๋ฅผ ์กฐํํ๋ค๋ ์ ์์ ์ฌ๋ฌ ๋ฒ ์์ฒญํ๋๋ผ๋ ์๋ต์ด ๋๊ฐ์ ๊ฒ ์ด๋ค. ๋ฐ๋๋ก POST๋ ๋ฆฌ์์ค๋ฅผ ์๋ก ์์ฑํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ ๋ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ๋ฉฑ๋ฑ์ด ์๋๋ผ๊ณ ๋ณผ ์ ์๋ค. (POST ์์ฒญ์ด ๋ฐ์ํ๋ฉด ์๋ฒ๊ฐ ๋ณ๊ฒฝ๋ ์ ์๋ค.)
GET๊ณผ POST๋ ์ด๋ฐ ์ฐจ์ด๋ค์ด ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ๋ ค๋ ๋ชฉ์ ์ ๋ง๋ ํ์ธํ ํ์ ์ฌ์ฉํด์ผํ๋ค.
GET๊ณผ POST ์ด์ธ์๋ PUT , DELETE ๋ฑ์ ์ ์ ํ ์ฌ์ฉํ๋๊ฒ ์ข์๋ฐ ์๋ฅผ๋ค์ด ๋ด์ ๊ฒฝ์ฐ์ ์ฌ์ดํธ๋ฅผ ๋์๋ค๋๋ฉด์ GET ์์ฒญ์ ๋ ๋ฆฐ๋ค. ์ด๋ด ๋ DELETE ๋ฑ์ GET์ผ๋ก ์ฒ๋ฆฌํ๋ฉด ๋ด์ ์ํด ์๋ฒ์ ์๋ ๋ฆฌ์์ค๋ค์ด ์ญ์ ๋๋ ์ํฉ์ด ์ผ์ด ๋ ์ ์๋ค! ํญ์ ๊ธฐ์ ์ ์ฌ์ฉํ ๋ ์ ๋ฅผ ์์ง๋ง์.
'Project๐ธ > ๊ฐ๋ฐ์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Axios๋? / Axios ์ฌ์ฉ ๋ฐ ์๋ฒ ํต์ ํด๋ณด๊ธฐ! (0) | 2023.05.20 |
---|---|
[๋ฉด์ ์ง๋ฌธโ๏ธ] Controller, Service, Repository ๊ฐ ๋ฌด์์ผ๊น? (0) | 2023.05.18 |
[Spring Boot๐ฑ] ์คํ๋ง๋ถํธ annotation ์ ๋ฆฌ (0) | 2023.05.18 |
[Spring๐ฑ] @Controller์ @RestController ์ฐจ์ด (0) | 2023.05.18 |
[JSON] JSON์ ๋ฌด์์ธ๊ฐ? ๊ทธ๋ฆฌ๊ณ ์ ์ฌ์ฉํ๋๊ฐ?? (0) | 2023.05.17 |