๊ธฐ๊ณ์ ๊ธฐ๊ณ ์ํํธ์จ์ด์ ์ํํธ์จ์ด ์ฌ์ด์์๋ ์๋ง์ ์์ฒญ๊ณผ ์ ๋ณด ๊ตํ์ด ์ด๋ฃจ์ด์ง๊ณ ์๋ค. ์ด๋ค ์ฌ์ด์์ ์ํตํ ์ฐฝ๊ตฌ๊ฐ ํ์ํ๋ค. ์๋ฅผ๋ค์ด ๊ธฐ์์ ๋ณด๊ฐ ๊ด๋ฆฌ๋๋ ๊ธฐ์์ฒญ ์๋ฒ๊ฐ ์๋ค. ๋ ์จ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๋ค์ํ ์น ์ฌ์ดํธ๋ ์ฑ๋ค์ด ์ด ๊ธฐ์์ฒญ ์๋ฒ๋ก๋ถํฐ ์ค์๊ฐ์ผ๋ก ๋ ์จ ์ ๋ณด๋ฅผ ์์ฒญํด์ ๋ฐ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด ๊ธฐ์์ฒญ ์๋ฒ์๊ฒ ์ ๋ณด๋ฅผ ์์ฒญํ๋ ์ง์ ๋ ํ์์ด ์์ด์ผ ํ๋ค.
"data:191031|place:seoul|which:temperature"
์ฌ๊ธฐ์ธ ๋ ์ง, ์ง์ญ, ์กฐํํ ๋ด์ฉ์ ์์ฑํด์ ์์ฒญํ๋ฉด ๋ต์ด ์ฌ๊ฑฐ๋ผ๋ ๊ณต๊ฐ๋ ๋ฉ๋ด์ผ์ด ์์ผ๋ฉด ๋๊ตฌ๋ ์ด๊ฑธ ์ฐธ์กฐํด์ ๊ธฐ์์ฒญ ์ ๋ณด๋ฅผ ํ์ฉํ ์ ์๋ค.
์ด๋ ๊ฒ ์ํํธ์จ์ด๊ฐ ๋ค๋ฅธ ์ํํธ์จ์ด๋ก ๋ถํฐ ์ง์ ๋ ํ์์ผ๋ก ์์ฒญ, ๋ช ๋ น์ ๋ฐ์ ์ ์๋ ์๋จ์ API๋ผ๊ณ ํ๋ค.
์น์ ์กด์ฌํ๋ ๋ชจ๋ ์์์ ๊ณ ์ ํ URI๋ฅผ ๋ถ์ฌํ์ฌ ์์์ ๋ํ ์ฃผ์๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ๋ก , ๋๋ ๊ท์น์ด๋ค.
RESTful API๋ REST ํน์ง์ ์งํค๋ฉด์ API๋ฅผ ์ ๊ณตํ๋ค๋ ์๋ฏธ ์ด๋ค.
โํ๋ก ํธ์๋์์ ๋ฐฑ์๋ API๋ฅผ ํธ์ถํ URL์ ์ด๋ป๊ฒ ๋ง๋ค๊ฒ์ธ๊ฐ?โ์ ๋ํ ์ด์ผ๊ธฐ์ด๋ค.
API ์ค๊ณ ๊ท์น ๊ฐ์ด๋ฐ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์๋ ๊ท์น์ด๋ค.
์ฆ, ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ฐ ์์ด์ ๊ฐ๋ฐ์๋ค ์ฌ์ด์ ๋๋ฆฌ ์ฐ์ด๋ ์ผ์ข
์ ํ์์ด๋ค.
๊ธฐ์ ์ด๋ ์ ํ์ด ์๋๋ผ ํ์์ด๊ธฐ ๋๋ฌธ์ ์ด๋ค ํ๋ก๊ทธ๋จ ์ธ์ด๋ฅผ ์ฐ๋ ๋ฌด์จ ํ๋ ์์ํฌ๋ฅผ ์ฐ๋ ํผ์ ๋ง์ถฐ์ ๊ธฐ๋ฅ๋ค์ ๋ง๋ค๋ฉด ๋๋ค.
๊ฐ์ฅ ์ค์ํ ํน์ง์ ๊ฐ ์์ฒญ์ด ์ด๋ค ๋์์ด๋ ์ ๋ณด๋ฅผ ์ํ ๊ฒ์ธ์ง๋ฅผ ์์ฒญ์ ๋ชจ์ต ์์ฒด๋ก ์ถ๋ก ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด๋ค.
ํ์์ ๋ฐ ๋ฆฌ์คํธ ์์ฒญ
http://(์ฌ์ดํธ ๋๋ฉ์ธ)/1
๋ฐ์ ํ์๋ค ๋ฆฌ์คํธ ์์ฒญ
http://(์ฌ์ดํธ ๋๋ฉ์ธ)/hello
ํ์์ ์ ๋ณด ์์ ์์ฒญ
http://(์ฌ์ดํธ ๋๋ฉ์ธ)/hyot-hong
์ด๋ฐ์์ผ๋ก ์ง๋ ์ด์ ๋ง์ถฐ ์์ฒญ์ ๋ณด๋ด๋ ์ฑ์ ๋ง๋ค๋ฉด ์๋น์ค์ ๊ธฐ๋ฅ ์์ฒด์๋ ๋ฌธ์ ๊ฐ ์์ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ ๋ฌธ์ ๋ ์๋น์ค๋ ๊ฐ๋ฐ์ ํผ์ ๋ง๋๋ ๊ฒ์ด ์๋๋ผ๋ ๊ฒ์ด๋ค. ์ด ์ผ์ ์ธ๊ณ๋ฐ๋ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ ์ด API๋ฅผ ์ฌ์ฉํด์ ๋ค๋ฅธ ์ ํ์ ๋ง๋๋ ๊ฐ๋ฐ์๋ค์ ๊ต์ฅํ ์ผํ๊ธฐ ํ๋ค์ด ์ง ๊ฒ์ด๋ค.
๋๋ฌธ์ RESTful API๋ฅผ ์ฌ์ฉํ๋ค. ์ด๋ ์์ฒญ์ ์ฃผ์๋ง์ผ๋ก๋ ๋๋ต ์ด๊ฒ ๋ญ ํ๋ ์์ฒญ์ธ์ง ํ์
์ด ๊ฐ๋ฅํ๋ค.
์์ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์๋ค
ํํ์ด์ง์ 10๋ช ์ฉ ๋ฐ์์ค๋ ๊ฑฐ๋ผ๋ฉด ์๋์ ๊ฐ์ด ํํํ ์ ์๋ค.
์์์ ๊ตฌ์กฐ์ ํจ๊ป ๋ํ๋ด๋ ์ด๋ฐ ํํ์ ๊ตฌ๋ถ์๋ฅผ URI๋ผ๊ณ ํ๋ค.
์ด๋ฐ ์กฐํ์์
๋ฟ ์๋๋ผ ์ ๋ณด๋ ๋ฃ๊ฑฐ๋ ์์ ํ๊ฑฐ๋ ์ญ์ ํ๋ ์์
๋ ํ์ํ๋ค.
์ด๋ฅผ ํตํ์ด์ CRUD๋ผ๊ณ ๋ถ๋ฅธ๋ค.
CREATE : ์์ฑ
READ : ์กฐํ
UPDATE : ์์
DELETE : ์ญ์
์๋ฒ์ REST API๋ก ์์ฒญ์ ๋ณด๋ผ๋๋ HTTP๋ ๊ท์ฝ์ ๋ฐ๋ผ ์ ํธ๋ฅผ ์ ๋ฌํ๋ค.
HyperText Transfer Protocol
REST API์ HTTP์ ๋ฉ์๋๋ 5๊ฐ์ง๊ฐ ์๋ค.
์ด๋ค์ ๋ชฉ์ ์ ๋ฐ๋ผ ๊ตฌ๋ถํด์ ์ฌ์ฉํด์ผ ํ๋ค.
GET , DELETE๋ณด๋ค POST, PUT, PATCH๊ฐ ์ ๋ณด๋ ๋ ๋ง์ด ๋น๊ต์ ์์ ํ๊ฒ ๊ฐ์ถฐ์ ์ค์ด๋ณด๋ผ ์ ์๋ค.
GET , DELETE < POST, PUT, PATCH
[GET] http://127.0.0.1:8000/product/main_page_product
[GET] http://127.0.0.1:8000/store/find_store
[POST] [http://127.0.0.1:8000/product/add_first_item_information]
[GET] [http://127.0.0.1:8000/store](http://127.0.0.1:8000/store/search_store)?name='๊ฐ๋จ'
์น ํ์ด์ง์ url ์ฃผ์๋ฅผ ๋ณด๋ฉด ์ข
์ข
?
๊ฐ ํฌํจ๋์ด ์๋ ๊ฒ์ ๋ดค์ ๊ฒ์ด๋ค.
?
๋ค์๋ key=value
ํ์์ ๋ฌธ์์ด์ด ๋ฐ๋ผ์จ๋ค. ์ด๋ฅผ Query parameter๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ฃผ๋ก ์๋์ ๊ฐ์ ๊ฒฝ์ฐ์ ํ์ฉํ๋ค.
/users?id=123
ID๊ฐ 123์ธ ์ฌ์ฉ์๋ฅผ ๊ฐ์ ธ์จ๋ค.
ํด๋น ๋ฆฌ์์ค์ ๋ ์์ธํ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด ์ ๊ทผํ ๋ ์ฌ์ฉํ๋ค.
/users/123
ID๊ฐ 123์ธ ์ฌ์ฉ์๋ฅผ ๊ฐ์ ธ์จ๋ค.
๋ฆฌ์์ค๋ฅผ ์๋ณํ๋ ค๋ฉด Path Variable๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.ย ๊ทธ๋ฌ๋ ํญ๋ชฉ์ ์ ๋ ฌํ๊ฑฐ๋ ํํฐ๋งํ๋ ค๋ฉด Query Parameter๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ด ์ ์ํ ์ ์๋ค.
/users ๐๐ป ์ฌ์ฉ์ ๋ชฉ๋ก ๊ฐ์ ธ์ค๊ธฐ
/users?occupation=programer ๐๐ป ํ๋ก๊ทธ๋๋จธ ๋ชฉ๋ก ๊ฐ์ ธ์ค๊ธฐ
/users/123 ๐๐ป ID๊ฐ 123์ธ ์ฌ์ฉ์ ๊ฐ์ ธ์ค๊ธฐ
๊ธฐ๋ณธ CRUD ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด ๋ค๋ฅธ URL ๋ฐ ๊ธฐํ Query Parameter๋ฅผ ์ ์ํ ํ์์๋ค. ์ํํ๋ ค๋ ์์ ์ ๋ฐ๋ผ HTTP ๋ฉ์๋๋ฅผ ๋ณ๊ฒฝํ๋ค.
/users [GET] ๐๐ป ์ฌ์ฉ์ ๋ชฉ๋ก ๊ฐ์ ธ์ค๊ธฐ
/users [POST] ๐๐ป ์ ์ฌ์ฉ์ ์์ฑ
/users/123 [PUT] ๐๐ป ์ฌ์ฉ์ ์
๋ฐ์ดํธ
/users/123 [DELETE] ๐๐ป ์ฌ์ฉ์ ์ ๊ฑฐ
์ฐธ๊ณ
https://medium.com/@fullsour/when-should-you-use-path-variable-and-query-parameter-a346790e8a6d
https://www.youtube.com/watch?v=iOueE9AXDQQ
์ข์ ๊ธ ๋ณด๊ณ ๊ฐ๋๋ค~