'Restful API๋?' ์ด๋ผ๋ ์ง๋ฌธ์ ๋ต๋ณ์ ์ํ REST API์ ๋ํ ๋ด์ฉ์ ์ ๋ฆฌํด๋ณธ๋ค.
RESTful API๋ ๊ฒฐ๊ตญ RESTํ๋ค๋ ์๋ฏธ์ธ๋ฐ, ๋จผ์ REST๊ฐ ์ด๋ค ์๋ฏธ์ธ์ง๋ถํฐ ์์์ผํ ํ์์ฑ์ด ์๊ฒ ๋ค.
REST API
REST API๋ HTTP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๋ฐฉ์์ ๊ท์ ํ ์ํคํ ์ฒ
REST๋ REpresentational State Transfer์ ์ฝ์๋ก, ์์(Resource)์ ๋ํ ์์ฒญ์ ํ์(HTTP Method)๋ก ์ฒ๋ฆฌํ๋ค.
์ฃผ๋ก JSON, XML ํ์์ ๋ฐ์ดํฐ๋ก ๋ฐํ๋์ด ์ฒ๋ฆฌ๋๋ค.
REST์ ๊ตฌ์ฑ
- ์์(Resource) - URI (์๋ํฌ์ธํธ)
- ํ์(Verb) - HTTP Method (HTTP ์์ฒญ ๋ฉ์๋)
- ํํ(representations) - ํ์ด๋ก๋ (JSON,XML ๋ฑ์ ํฌ๋งท์ ํตํด ์ ๋ฌ)
REST์ ํน์ง
- Stateless(๋ฌด์ํ์ฑ): ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ์ ์งํ์ง ์๋๋ค. (์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ๋ง์ ์ฒ๋ฆฌ)
- Cacheable(์บ์ ๊ฐ๋ฅ): ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์๋ต์ ์บ์ฑ์ฒ๋ฆฌ ํ ์ ์๋ค.
- Uniform Interface(์ผ๊ด๋ ์ธํฐํ์ด์ค): ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ธํฐํ์ด์ค๋ ์ผ๊ด์ฑ ์๊ฒ ์ค๊ณ๋์ด์ผ ํ๋ค.
- Layered System(๊ณ์ธต ๊ตฌ์กฐ): ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์ง์ ํต์ ํ๋ ๋์ ์ค๊ฐ ๊ณ์ธต(๋ก๋ ๋ฐธ๋ฐ์, ์บ์ ๋ฑ)์ ํตํด ํต์ ํ ์ ์๋ค.
- Code on Demand(์ ํ์ ์ฝ๋ ์ ์ก): ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ์คํ ์ฝ๋๋ฅผ ์ ์กํ ์ ์๋ค.
REST ์ค๊ณ ์์น
- HTTP URI๋ฅผ ํตํด ์์์ ๋ช ์
- HTTP ๋ฉ์๋(GET,POST,PUT,DELETE)๋ฅผ ํตํด ํ์ ํํ
์ ๋ ๊ฐ์ง๊ฐ ์ ์ง์ผ์ก์ ๋ RESTfulํ๊ฒ ์ค๊ณ๋์๋ค๊ณ ํ ์ ์์ ๊ฒ ๊ฐ๋ค.
RESTful API
์์ ๋์ดํ REST์ ๊ธฐ๋ณธ ์์น์ ์ ์งํจ API๋ฅผ RESTful API๋ผ๊ณ ์ ์ํ๋ค.
HTTP ์์ฒญ ๋ฉ์๋
์ด๋์ง ์ต์ํ GET, POST ๋ฑ๋ฑ์ ๋ฉ์๋๋ค!..
๋ฉ์๋ | ์ข ๋ฅ | ๋ชฉ์ | ํ์ด๋ก๋ ํ์์ฌ๋ถ |
---|---|---|---|
GET | index/retrieve | ๋ชจ๋ /ํน์ ๋ฆฌ์์ค ์ทจ๋ | x |
POST | create | ๋ฆฌ์์ค ์์ฑ | o |
PUT | replace | ๋ฆฌ์์ค์ ์ ์ฒด ๊ต์ฒด | o |
PATCH | modify | ๋ฆฌ์์ค ์ผ๋ถ ์์ | o |
DELETE | delete | ๋ชจ๋ /ํน์ ๋ฆฌ์์ค ์ญ์ | x |
PUT๊ณผ PATCH ๊ฐ์ ๊ฒฝ์ฐ์๋ ๋ ๋ค ์์ ์ ์ด์ฉ๋ ์ ์์ง๋ง,
PUT ๊ฐ์ ๊ฒฝ์ฐ์๋ ๋ฆฌ์์ค์ ์ ์ฒด๋ฅผ, PATCH๋ ์ผ๋ถ๊ฐ ์์ ๋๋ค๋ ์ฐจ์ด๊ฐ ์๋ค.
RESTful API ์์ฑ ์์
- URI์ ๋์ฌ๋ฅผ ํฌํจํ์ง ์๊ณ HTTP Method๋ก ๋์ฒดํ๊ธฐ
# bad
GET /todos/delete/1
GET /deleteTodos/1
# good
DELETE /todos/1
- ์๋ฌธ์๋ก ๊ตฌ์ฑํ๊ธฐ
# bad
/Todos/1
# good
/todos/1
- ํ์ผ ํ์ฅ์ ํ์ํ์ง ์๊ธฐ
# bad
users/1/profile.png
# good
users/1/profile (Acceipt: image/png)
Restful API ์ธ์ ๋ค๋ฅธ API ์ํคํ ์ฒ ์คํ์ผ
SOAP API(Simple Object Access Protocol)
SOAP๋ XML ๊ธฐ๋ฐ์ ๋ฉ์์ง ๊ตํ ํ๋กํ ์ฝ์ด๋ค.
SOAP API๋ HTTP, HTTPS, SMTP ๋ฑ์ ํ๋กํ ์ฝ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ฉฐ, ์ฃผ๋ก XML ๋ฐ์ดํฐ ํ์์ ์ฌ์ฉํ๋ค.
GraphQL API(Graph Query Language)
GraphQL์ ํ์ด์ค๋ถ์์ ๊ฐ๋ฐํ ์ฟผ๋ฆฌ ์ธ์ด๋ค.
GraphQL API๋ ํด๋ผ์ด์ธํธ์์ ์์ฒญํ ํ๋๋ง์ ๋ฐํํ๋ฉฐ, ์ฌ๋ฌ ์์ฒญ์ ๋ฌถ์ด ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ ๋ฑ์ ์ ๊ณตํ๋ค.
์ด์ธ์๋ RPC API, WebSocket API ๋ฑ์ด ์๋ค.
์ถ์ฒ
https://aws.amazon.com/ko/what-is/restful-api/
https://pronist.dev/146#%EC%A0%95%EB%A0%AC%2C%20%ED%95%84%ED%84%B0%EB%A7%81%2C%20%ED%95%84%EB%93%9C%20%EC%84%A0%ED%83%9D-1
'๐ Studying > CS & Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ธ๋ผ์ฐ์ ์ ์ฅ์ (Local/Session Storage, Cookie) (0) | 2023.03.31 |
---|---|
HTTP์ HTTP์ ๋ฉ์ธ์ง ๊ตฌ์กฐ (0) | 2023.03.30 |
ํ๋ก ํธ์๋์์์ ์บ์ (0) | 2023.03.29 |
ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐจ์ด์ (0) | 2023.03.29 |
google.com์ ์ฃผ์์ฐฝ์ ์ ๋ ฅํ์ ๋ ์ผ์ด๋๋ ์ผ (1) | 2023.03.21 |
Comment