[ํค์๋]
HTTP Method
REST API
RESTful API
Django Rest Framework
Postman
[์ง๋ฌธ๋ฆฌ์คํธ]
REST API
,RESTful API
๋ ๋ฌด์์ผ๊น์?HTTP Method
์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
REST API
, RESTful API
๋?REST
๋?
REpresentational State Transfer
์ ์ฝ์๋ก, ์น์ ์กด์ฌํ๋ ์์์ ๊ณ ์ ํURI
๋ฅผ ๋ถ์ฌํ๊ณ ํด๋น ์์์ ์ํ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ ๋งํ๋ค.
REST
๊ตฌ์ฑResource
): URI(Uniform Resource Identifier)
๋ ์ ๋ณด์ ์์์ ํํํด์ผ ํ๋ค.Verb
): HTTP Method
Representations
): ์์์ ๋ํ ํ์๋ HTTP Method
๋ก ํํํ๋ค.REST
ํน์ง1. ํด๋ผ์ด์ธํธ / ์๋ฒ ๊ตฌ์กฐ (Client-Server
)
์์์ด ์๋ Server , ์์์ ์์ฒญํ๋ Client์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
2. ๋ฌด์ํ (Stateless
)
HTTP๋ Stateless ํ๋กํ ์ฝ ์ด๋ฏ๋ก REST ์ญ์ ๋ฌด์ํ์ฑ์ ๊ฐ์ง๋ค. ํด๋ผ์ด์ธํธ์ Context ๋ฅผ ์๋ฒ์ ์ ์ฅํ์ง ์๋๋ค.
3. ์บ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ (Cachealble
)
์น ํ์ค HTTP ํ๋กํ ์ฝ์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฏ๋ก , ์น์์ ์ฌ์ฉํ๋ ๊ธฐ์กด์ ์ธํ๋ผ๋ฅผ ๊ทธ๋๋ก ํ์ฉ ๊ฐ๋ฅํ๋ค.
4. ๊ณ์ธตํ
API ์๋ฒ๋ ์์ ๋น์ฆ๋์ค ๋ก์ง์ ์ํํ๊ณ ๊ทธ ์๋จ์ ์ฌ์ฉ์ ์ธ์ฆ , ์ํธํ , ๋ก๋๋ฐธ๋ฐ์ฑ ๋ฑ์ ํ๋ ๊ณ์ธต์ ์ถ๊ฐํ์ฌ ๊ตฌ์กฐ์์ ์ ์ฐ์ฑ์ ์ค ์ ์๋ค.
5. ์ธํฐํ์ด์ค ์ผ๊ด์ฑ(Uniform Interface
)
URI๋ก ์ง์ ํ ์์์ ๋ํ ์กฐ์์ ํต์ผ๋๊ณ ํ์ ์ ์ธ ์ธํฐํ์ด์ค๋ก ์ํํ๋ค. HTTP ํ์ค์๋ง ๋ฐ๋ฅธ๋ค๋ฉด ๋ชจ๋ ํ๋ซํผ์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
6. ์์ฒด ํํ ๊ตฌ์กฐ
๋์ฌ(Method) + ๋ช
์ฌ(URI) ๋ก ์ด๋ฃจ์ด์ ธ์์ด ์ด๋ค ๋ฉ์๋์ ๋ฌด์จ ํ์๋ฅผ ํ๋์ง ์ ์ ์์ผ๋ฉฐ REST API ์์ฒด๊ฐ ๋งค์ฐ ์ฌ์์ API ๋ฉ์ธ์ง ์์ฒด๋ง ๋ณด๊ณ ๋ API๋ฅผ ์ดํดํ ์ ์๋ค
API
๋?
API
(Application Programming Interface
)๋ ํ๋ก๊ทธ๋จ์ ์ํ ์ธํฐํ์ด์ค, ์ฆ ํ๋ก๊ทธ๋จ๋ค์ด ์ํธ์์ฉํ๋ ๊ฒ์ ๋์์ฃผ๋ ๋๊ตฌ์ด๋ค.
์ฝ๊ฒ ๋งํ๋ฉด ํค๋ณด๋ ๊ฐ์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์ฐ๋ฆฌ๊ฐ ํค๋ณด๋๋ฅผ ํตํด ์ปดํจํฐ์ ์ํธ์์ฉํ๋ ๊ฒ์ฒ๋ผ ์ฝ๋๋ค๋ผ๋ฆฌ ์๋ก ์ํตํ๊ธฐ ์ํด์ ๋ง๋ค์ด์ง ๊ฒ์ด ๋ฐ๋ก API
์ด๋ค.
REST API
๋?
REST
๊ธฐ๋ฐ์ผ๋ก ์๋น์คAPI
๋ฅผ ๊ตฌํํ ๊ฒ.
HTTP
ํ์ค์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํํ๊ธฐ ๋๋ฌธ์ HTTP
๋ฅผ ์ง์ํ๋ ํ๋ก๊ทธ๋จ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ฅผ ๊ตฌํํ ์ ์๋ค.
RESTful API
๋?
REST
๋ฅผREST
๋ต๊ฒ ์ฐ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด๋ค.
REST
์ 6๊ฐ์ง ๊ท์น์ ์ ์ง์ผ์ ์ค๊ณ๋ API
๋ฅผ ๋งํ๋ค.HTTP Method
๋?ํด๋ผ์ด์ธํธ๊ฐ ์น ์๋ฒ์๊ฒ ์ฌ์ฉ์ ์์ฒญ์ ๋ชฉ์ ์ด๋ ์ข ๋ฅ๋ฅผ ์๋ฆฌ๋ ์๋จ์ด๋ค.
GET
์ฃผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ๊ฒ์ํ ๋ ์ฌ์ฉํ๋ค.
URL
์ ๋ด์์ ์ ๋ฌํ๋ค.POST
์์ฒญ๋ ์์์ ์์ฑ(
CREATE
)ํ๋ค.
HTTP
์์ฒญ ๋ฉ์์ง์ body
์ ์ฌ์ฉ์ ์
๋ ฅ์ด ์ ์ฅ๋์ด ์๋ฒ๋ก ์ ๋ฌ๋๋ค.GET
vs. POST
POST
์์ฒญ์ ์ถ๊ฐ์ ์ธ ๋ฐ์ดํฐ๋ฅผ body
์ ํฌํจํ ์ ์์ง๋ง, GET
์์ฒญ์ ๋ชจ๋ ํ์ํ ๋ฐ์ดํฐ๋ฅผ URL
์ ํฌํจํ์ฌ ์์ฒญํ๋ค.POST
๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. GET
์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ URL
์ ๋ด๊ธฐ๊ธฐ ๋๋ฌธ์ ๋ชจ๋์๊ฒ ๋ณด์ฌ์ง๊ธฐ ๋๋ฌธ์ด๋ค.PUT
์์ฒญ๋ ์์์ ์์ (
UPDATE
)ํ๋ค.
DELETE
์์ฒญ๋ ์์์ ์ญ์ ๋ฅผ ์์ฒญํ๋ค.
DRF
DRF(Django Rest Framework)
๋Django
์์์RESTful API
์๋ฒ๋ฅผ ์ฝ๊ฒ ๊ตฌ์ถํ ์ ์๋๋ก ๋์์ฃผ๋ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
DRF
์ค์ต์ง์ DRF
๋ฅผ ์ด์ฉํด์ RESTful API
๋ฅผ ๋ง๋ค์ด๋ณด์!
(์ค์ต์ ์์ง ์งํ ์ค์ด์ด์ ๋์ค์ ์์ ํด์ ์ฌ๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค!)
https://hckcksrl.medium.com/rest%EB%9E%80-c602c3324196
https://spidyweb.tistory.com/128
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
http://www.incodom.kr/REST#h_7237c49e9f306fd4839ad4ca1e3da8c1
https://velog.io/@ckstn0777/WEB-REST%EB%9E%80
https://blog.metafor.kr/165
https://prohannah.tistory.com/156
https://velog.io/@kimsj5259/HTTP-%EB%A9%94%EC%86%8C%EB%93%9C-%EC%A0%95%EB%A6%AC
https://kyun2da.dev/CS/http-%EB%A9%94%EC%86%8C%EB%93%9C%EC%99%80-%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C/