Bibi's DevLog ๐ค๐
REST API๊ฐ ๋ญ๊ฐ์? - ์ธํฐํ์ด์ค, API, REST API, HTTP method ๋ณธ๋ฌธ
REST API๊ฐ ๋ญ๊ฐ์? - ์ธํฐํ์ด์ค, API, REST API, HTTP method
๋น๋น bibi 2021. 3. 17. 00:28REST API๊ฐ ๋ญ๊ฐ์? - ์ธํฐํ์ด์ค, API, REST API, HTTP method
์ธํฐํ์ด์ค๋?
: ์ํต์ฐฝ๊ตฌ
์ฌ์ฉ์๊ฐ ๋ช ๋ น์ ์ ๋ ฅํ๊ฒ ํด์ฃผ๊ณ , ์คํ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํด์ฃผ๋ ๊ธฐ๋ฅ์ ํจ.
์ด๋ค ๊ธฐ๊ณ๋ฅผ ๋ง๋ค๋ฉด ์ฌ์ฉ์๊ฐ ๊ทธ ๊ธฐ๋ฅ์ ์ ๋ถ ํ์ฉํ ์ ์๋๋ก ์ ์ด์ฅ์น๋ฅผ ๋ง๋ค์ด์ผ ํจ.
(TV-๋ฆฌ๋ชจ์ปจ, ์ํ๊ธฐ-๋ฒํผ, ์ปดํจํฐ-ํค๋ณด๋์ ๋ง์ฐ์ค์ฒ๋ผ. )
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ ๊ฒฝ์ฐ, ๋ฒํผ, ์คํฌ๋กค๋ฐ, ์ฌ๋ผ์ด๋, ๋ธ๋ผ์ฐ์ ์ฐฝ ๋ฑ ์ฌ์ฉ์๊ฐ ์ฑ์ ์ ์ดํ๋๋ก ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค. (UI : User Interface, ์ฌ์ฉ์ ์ธํฐํ์ด์ค)
๋ง์ฐฌ๊ฐ์ง๋ก ๊ธฐ๊ณ-๊ธฐ๊ณ, ์ํํธ์จ์ด-์ํํธ์จ์ด ์ฌ์ด์์๋ ์๋ง์ ์์ฒญ๊ณผ ์ ๋ณด๊ตํ์ด ์ด๋ฃจ์ด์ง๋๋ฐ, ์ด๋ฅผ ์ํ ์ฐฝ๊ตฌ๋ฅผ API๋ผ๊ณ ํ๋ค.
API๋?
Application Programming Interface.
: ์ํํธ์จ์ด๊ฐ ๋ค๋ฅธ ์ํํธ์จ์ด๋ก๋ถํฐ ์ง์ ๋ ํ์์ผ๋ก ์์ฒญ/๋ช ๋ น์ ๋ฐ์ ์ ์๋ ์ฐฝ๊ตฌ(์ธํฐํ์ด์ค)
์๋ฅผ ๋ค์ด ๊ธฐ์์ฒญ ์๋ฒ๋ก๋ถํฐ ๊ธฐ์์ ๋ณด๋ฅผ ์ ๊ณต๋ฐ์ผ๋ ค๋ฉด ๊ธฐ์์ฒญ์ด ์ง์ ํ ํ์์ผ๋ก ์์ฒญํด์ผ ํ๋ค.
REST API๋?
RESTํ ํ์์ API.
: ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐ ์์ด ๊ฐ๋ฐ์๋ค ์ฌ์ด์ ๋๋ฆฌ ์ฐ์ด๋ ํ์์ ์ผ์ข .
HTTP ์์ฒญ์ ๋ณด๋ผ ๋, ์ด๋ค URI์ ์ด๋ค ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ง ๊ฐ๋ฐ์ ์ฌ์ด์ ๋๋ฆฌ ์ง์ผ์ง๋ ์ฝ์์ด๋ค
(์ฐ์ฒด๊ตญ์์ ํ๋ฐฐ๋ฅผ ๋ณด๋ด๋ ค๋ฉด ์ก์ฅ์ด๋ผ๋ 'ํ์'์ ์์ฑํด์ผ ํ๋ ๊ฒ์ฒ๋ผ)
โป ๊ธฐ์ , ์ ํ์ด ์๋ 'ํ์'์ด๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋๋ฐ์ธ์ด/๋ผ์ด๋ธ๋ฌ๋ฆฌ/ํ๋ ์์ํฌ ... ์ ๊ด๊ณ์์ด ์ด ํ์์ ๋ง์ถฐ ๊ธฐ๋ฅ์ ๋ง๋ค ์ ์๋ค.
REST API์ ํต์ฌ์?
"๊ฐ ์์ฒญ์ด ์ด๋ค ๋์/์ ๋ณด๋ฅผ ์ํ ๊ฒ์ธ์ง๋ฅผ, ์์ฒญ์ ๋ณด๋ด๋ ์ฃผ์์ ๋ชจ์ต ๋ง์ผ๋ก ํ์ ํ ์ ์๋ค" ์ด๋ค.
URL์ ์๋ฌด๋ ๊ฒ๋ ์ง๋ ๋์๋ง ์ ํ๋ฉด ์๋น์ค ๊ธฐ๋ฅ์๋ ๋ฌธ์ ๊ฐ ์์ ๊ฒ์ด๋ค.
ํ์ง๋ง ์๋น์ค๋ ๊ฐ๋ฐ์ ํผ์์ ๋ง๋๋ ๊ฒ์ด ์๋๊ณ , ํผ์ ๋ง๋ค๋๋ผ๋ ๊ทธ ์๋น์ค๋ฅผ ์ด์ฉํ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ด ๊ทธ API๋ฅผ ์ด์ฉํ๊ธฐ ์ด๋ ค์์ง ์ ์๋ค.
- ์์ฒญํ๋ ์ ๋ณด(๋ช
์ฌ)๋ฅผ URL๋ก ํ์ฉํ๋ค.
- URI๋ ๋์ฌ๊ฐ ์๋ ๋ช ์ฌ๋ค๋ก ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค
- ๊ณ ์ ๋ฒํธ (์ซ์)๋ index๋ก ์ดํดํ ์ ์๋ค.
- ์๋ฅผ ๋ค์ด
https://www.codingschool.com/classes/2/students/15
์ ๊ฐ์ด URL์ ๊ตฌ์ฑํ๋ฉด, ์ด ์ฃผ์๋ฅผ ๋ณด๊ณ 'codingschool์ 2๋ฐ 15๋ฒ ํ์์ ์ ๋ณด๋ฅผ ์์ฒญํ๋ ๊ฑฐ๊ตฌ๋'๋ผ๊ณ ์ฝ๊ฒ ์ดํดํ ์ ์๋ค.(URI, ์์์ ๊ตฌ์กฐ์ ํจ๊ป ๋ํ๋ด๋ ๊ตฌ๋ถ์)
์๋ฒ์ REST API๋ก ์์ฒญ์ ๋ณด๋ผ ๋๋ HTTP ๊ท์ฝ์ ๋ฐ๋ผ ์ ํธ๋ฅผ ์ ์กํ๋ค.
HTTP method
: HTTP๋ก ์์ฒญ์ ๋ณด๋ผ ๋ ์ฌ์ฉํ๋ ์ฌ๋ฌ ๋ฉ์๋.
GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH ... ๊ฐ ์๋ค
์ฐ์ฒด๊ตญ์์ ํ๋ฐฐ๋ฅผ ๋ณด๋ผ ๋ ์ผ๋ฐ, ๋ฑ๊ธฐ, ํน์ก ๋ฑ์ด ์๋ ๊ฒ๊ณผ ๊ฐ๋ค.
- RestAPI์์๋ ์ด ์ค GET, POST, PUT, DELETE (+ PATCH)๋ฅผ ์ฌ์ฉํ๋ค.
- POST, PUT, PATCH๋ BODY๋ผ๋ ์ฃผ๋จธ๋๊ฐ ์์ด, GET๋๋DELETE๋ณด๋ค ์ ๋ณด๋ค์ ๋ ๋ง์ด, ์์ ํ๊ฒ ๊ฐ์ถฐ์ ์ ์กํ ์ ์๋ค.
โป POST๋ง์ผ๋ก๋ ์ฝ๊ธฐ, ์ฐ๊ธฐ, ์ญ์ ๋ฑ์ ๋ค ํ ์ ์์ง๋ง, ๋๊ตฌ๋ ์์ฒญ์ ์๋๋ฅผ ์ฝ๊ฒ ํ์ ํ ์ ์๋๋ก ๋ชฉ์ ์ ๋ฐ๋ผ HTTP method๋ฅผ ๊ตฌ๋ถํด ์ฌ์ฉํด์ผ ํ๋ค.
์ฆ Restfulํ๊ฒ URL์ ๋ง๋ค์ด, HTTPmethod๋ง์ผ๋ก๋ ๊ตฌ๋ถ ๊ฐ๋ฅํ ์์ฒญ๋ค๋ก ๊ตฌ์ฑํด์ผ ํ๋ค
HTTP method๋ฅผ ์ฌ์ฉํ REST API์ CRUD ๊ตฌํ
GET : ๋ฐ์ดํฐ๋ฅผ ์กฐํ (Read)
GET,
https://www.codingschool.com/classes/2/students
: codingschool์ 2๋ฐ ํ์๋ค์ ์กฐํํ๊ฒ ๋ค๋ ์์ฒญ
POST : ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ(Create)
POST,
https://www.codingschool.com/classes/2/students
BODY ์ ์ ํ์์ ์ ๋ณด
: codingschool์ 2๋ฐ ํ์์ ์๋ก์ด ์ ๋ณด(ํ์)์ ์ถ๊ฐํ๋ค๋ ์์ฒญ
PUT / PATCH : ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝ (Update)
PUT / PATCH,
https://www.codingschool.com/classes/2/students/14
BODY์ ์์ ํ ํ์์ ์ ๋ณด
: codingschool์ 2๋ฐ์ 14๋ฒ ํ์ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ๊ฒ ๋ค๋ ์์ฒญ
์ฌ์ฉ๋ฒ์ ํ์ฌ๋ง๋ค, ๊ฐ๋ฐ์๋ง๋ค ์กฐ๊ธ์ฉ ๋ค๋ฅด์ง๋ง
- PUT : ์ ๋ณด๋ฅผ ํต์งธ๋ก ๊ฐ์ ๋ผ์ธ ๋ ์ฌ์ฉ
- PACTH : ์ ๋ณด ์ค ์ผ๋ถ๋ฅผ ํน์ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํ ๋ ์ฌ์ฉ
DELETE : ๋ฐ์ดํฐ๋ฅผ ์ญ์ (Delete)
DELETE,
https://www.codingschool.com/classes/2/students/3
: codingschool์ 2๋ฐ์ 3๋ฒ ํ์ ์ ๋ณด๋ฅผ ์ญ์ ํ๊ฒ ๋ค๋ ์์ฒญ
์ฌํํ์ต : REST API์ ๋ํด ๋ ๊ณต๋ถํ๊ธฐ
๊ทธ๋ฐ RestAPI๋ก ๊ด์ฐฎ์๊ฐ
, restful api design guidelines ๋ผ๋ ํค์๋๋ก ๊ฒ์ํ๋ฉด ์ข์ ์๋ฃ๊ฐ ์์ผ๋ ์ฐธ๊ณ .
์ถ๊ฐ : API ์ ์๋ฏธ?
API์ ์๋ฏธ๊ฐ ํท๊ฐ๋ ค์ ๊ทธ๋ฃน์ ๋ถ๋ค๊ป ์ง๋ฌธ์ ๋๋ ค ๋ณด์๋ค.
(Pyro, August ๊ฐ์ฌํฉ๋๋ค๐โโ๏ธ๐โโ๏ธ!!)
API๋ ''์ธํฐํ์ด์ค''๋ผ๊ณ ์ดํดํ๋ฉด ๋๋ค. (์ธํฐํ์ด์ค = ์ฐ๊ฒฐ๋ค๋ฆฌ.)
ํ๋ก๊ทธ๋จ์ ๋ง๋ค๊ณ ๊ทธ๊ฒ์ ์ธ๋ถ์์ ์ฌ์ฉํ ๋, ์ฌ์ฉํ๋ ์๋จ์ API๋ผ๊ณ ํ๋ค.
๊ทธ ๋ด๋ถ๋ฅผ ๊น๋ณด์ง ์์๋ (๋ก์ง์ ๋ชฐ๋ผ๋) ์ฌ์ฉํ ์ ์์ด์ผ ์ธํฐํ์ด์ค๋ผ๊ณ ํ ์ ์๋ค.
์ฆ, ๋ด๋ถ ์ฝ๋๋ฅผ ๋ชฐ๋ผ๋ ์ฌ์ฉํ ์ ์๋๋ก '์ธ๋ถ์ฌ์ฉ์'์๊ฒ ์ฐ๊ฒฐ๋ค๋ฆฌ๋ฅผ ๋์์ฃผ๋๊ฒ์ ๋ชจ๋ API๋ผ๊ณ ํ ์ ์๋ค.
์๋ฐ ๋จ์์์์ API๋ ํจ์ ๋จ์ (๊ฐ๋ฐ์ ์ ์ฅ์์)์ด๋ฉฐ,
์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ArrayList ๊ฐ์ ๊ฒ๋ import ํด์ ์ฐ๋ api๋ผ๊ณ ํ ์ ์๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก, ๋ด๊ฐ ์ค์ค๋ก ์๋ฐ๋ก ์ ์์ฑํ ๋ฌด์ธ๊ฐ๋ฅผ ๋ค๋ฅธ ์ฌ๋์ด importํด์ ์ฌ์ฉํ๋ค๋ฉด ๊ทธ๊ฒ๋ api์ด๋ค.
'๐ฅ BE ๋ฐฑ์๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
HTTP Response Body์ ์์ธ error message ์ง์ ํด ๋ณด๋ด๊ธฐ (0) | 2021.04.30 |
---|---|
๋์์ฑ Concurrency (+ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ, ๋์์ฑvs๋ณ๋ ฌ์ฑ) (0) | 2021.03.20 |
Camel case, Kebab case, Snake case ๊ทธ๋ฆฌ๊ณ Pascal case (0) | 2021.03.17 |
[HTML] input ๋นํ์ฑํํ๊ธฐ - disabled, readonly (0) | 2021.03.15 |
์ ์ ์น, ๋์ ์น, MVC ์น ํ๋ ์์ํฌ (0) | 2021.03.12 |