โ API๋?
- Application Programming Interface
- ์ํํธ์จ์ด์ ๊ธฐ๋ฅ์ ์คํ์ํค๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ ์ธํฐํ์ด์ค
( ์๋ฅผ ๋ค๋ฉด , ์ฐ๋ฆฌ๋ API๋ฅผ ์ด์ฉํ์ฌ ํด๋ํฐ์ ๋ณผ๋ฅจ์ ์กฐ์ ํ๋ ๊ธฐ๋ฅ, ํ๋ฉด์ ๊ป๋ค ์ผ๋ ๊ธฐ๋ฅ์ ์คํํ ์ ์๋ค. )
- ์๋ก ๋ค๋ฅธ ์ํํธ์จ์ด๋ผ๋ฆฌ ์ง์ ๋ ํ์์ผ๋ก ์์ฒญํ๊ณ ์๋ต๋ฐ์ ์ ์๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ ์ธํฐํ์ด์ค
- ์ฆ, ํ ํ๋ก๊ทธ๋จ์์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ ๋ช ์ํ๋ ์ธํฐํ์ด์ค
โ REST API ํ์์ฑ
์น์๋น์ค๋ฅผ ์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ๋ ๋ธ๋ผ์ฐ์ ๋ฟ๋ง์ด ์๋๋ผ,
์ค๋งํธํฐ, ํ๋ธ๋ฆฟ, ์ค๋งํธ ์์น, ์ผ์, CCTV ๋ฑ์ ๋ค์ํ ๊ธฐ๊ธฐ๋ค์ด ๋ ์ ์๋ค.
์น ์๋ฒ๋ ์ด์ฒ๋ผ ๋ค์ํ ์ข ๋ฅ์ ๋ชจ๋ ํด๋ผ์ด์ธํธ๋ค์ ์์ฒญ์ ๋ํด ์ ์ ํ ์๋ตํด์ผ ํ๋ค.
๋ค์ ๋งํด, ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์ข ๋ฅ์ ์๊ด ์์ด ๋ชจ๋ ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ์ ์๋ต์ ๋ฐ์ ์ ์๋๋ก ํด์ฃผ์ด์ผ ํ๋ค.
์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ๊ฐ๋ ์ด ๋ฐ๋ก REST API์ด๋ค.
โ REST๋?
- Representational State Transfer
- ์น ์๋น์ค์์ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ๋ ๊ตฌ์กฐ์ ์คํ์ผ์ ์๋ฏธํ๋ค.
- HTTP ์ ์ฅ์ ์ ์ต๋ํ ํ์ฉํ๊ธฐ ์ํ ์ํคํ ์ฒ์ด๋ค.
- HTTP URI๋ฅผ ํตํด ๋ฆฌ์์ค๋ฅผ ๋ช ์ํ๊ณ , HTTP Method๋ฅผ ํตํด ํด๋น ์์์ ๋ํ ๋์์ ๋ช ์ํ๋ ํ์์ด๋ค.
โ
REST API๋?
- ๊ฐ๋ฐ์๋ค ์ฌ์ด์์ ๋๋ฆฌ ์ด์ฉ๋๋, REST ํ์์ ๋ฐ๋ฅด๋ API
- ๊ธฐ๊ณ์ ๊ธฐ๊ณ๊ฐ ์ธํฐ๋ท ๋๋ ์น์ผ๋ก ํต์ ํ ์ ์๊ฒ (์ฆ, ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ) ํด์ฃผ๋ ๊ท๊ฒฉํ๋ ํต์ ๊ท์น.
- ์น ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ๋ทฐํ์ด์ง๋ก ๋ณด์ฌ์ฃผ๋ ๋์ ๋ฐ์ดํฐ ํํ๋ก ๋ฐํํ๋ฏ๋ก,
ํด๋ผ์ด์ธํธ์ ์ข ๋ฅ์ ์๊ด ์์ด ์น ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๊ฒ ํด์ค๋ค.
- ๋ฐํ๋๋ ๋ฐ์ดํฐ๋ ์ฃผ๋ก XML์ด๋ JSON ํํ์ด๋ค. (์์ฆ์๋ ๋๋ถ๋ถ JSON)
- ๊ฐ ์์ฒญ์ด ์ด๋ค ๋์์ด๋ ์ ๋ณด๋ฅผ ์ํ ์์ฒญ์ธ์ง , ์ฆ ์์ฒญ์ ๋ชฉ์ ์ ์์ฒญ ์ฃผ์(URL)์ ๋ชจ์๋ง ๋ณด๊ณ ํ์ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด ํฐ ํน์ง์ด๋ค!
- REST API๋ HTTP ๊ท์ฝ์ ๋ฐ๋ฅธ๋ค. ( โถ๏ธ HTTP ๊ด๋ จ ํฌ์คํ ๋ณด๋ฌ๊ฐ๊ธฐ )
- HTTP์๋ ๊ฐ ๋ชฉ์ ์ ๋ฐ๋ฅธ ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ํ ๋ค์ํ ๋ฉ์๋๋ค์ด ์๋ค.
- REST API์์๋ CRUD์ ๊ฐ ๋ชฉ์ ์ ๋ฐ๋ผ ์๋ ๋ฉ์๋๋ค์ ์ฃผ๋ก ํ์ฉํ๋ค.
๋ชฉ์ (๊ธฐ๋ฅ) | HTTP ๋ฉ์๋ |
Create | POST |
Read | GET |
Update | PUT (์ ์ฒด ๋ด์ฉ ๋ณ๊ฒฝ) PATCH (๋ถ๋ถ ๋ณ๊ฒฝ) |
Delete | DELETE |
* ์ ๋ฆฌํ๋ฉด
REST๋, HTTP ์์ฒญ์ ๋ณด๋ผ ๋ ์ด๋ค URI์ ์ด๋ค ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ง ๋ช ์ํ๋ ํ์์ด๋ค.
REST API๋, REST ํ์์ ๋ฐ๋ฅด๋ API์ด๋ค.
โ REST API ์ค๊ณ ๊ท์น
- REST API์ ์์ ํํ์ ์ํ URI ์ค๊ณ ๊ท์น์ด ์กด์ฌํ๋ค.
- ์๋์ ์ค๊ณ ๊ท์น๋ค์ ๋ฐ๋ผ URI๋ฅผ ์ค๊ณํ๋ ๊ฒ์ด ์ข๋ค.
โ๏ธ ์๋ฌธ์๋ง ์ฌ์ฉํ๋ค (URI๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ฏ๋ก, ํผ๋์ ์ค์ด๊ธฐ ์ํด์)
โ๏ธ ์ธ๋๋ฐ(_) ๋์ ํ์ดํ(-)์ ์ฌ์ฉํ๋ค
โ๏ธ ๊ธด URI์์ ๊ฐ๋ ์ฑ์ ๋์ด๊ธฐ ์ํด ํ์ดํ(-)์ ์ฌ์ฉํด์ผ ํ๋ค
http://catromi.tistory.com/v1/posts/thisismyfirstpost # โ ์๋ชป๋ ์
http://catromi.tistory.com/v1/posts/this-is-my-first-post # ๐ข ์ข์ ์
โ๏ธ ํ์ฅ์๋ฅผ ํ์ํ์ง ์๋๋ค
http://catromi.tistory.com/v1/bear.jpg # โ ์๋ชป๋ ์
http://catromi.tistory.com/v1/bear # ๐ข ์ข์ ์
โ๏ธ ๋งจ ๋ค์ ์ฌ๋์(/)๋ฅผ ํฌํจํ์ง ์๋๋ค. ์ฌ๋์๋ ๊ณ์ธต ๊ด๊ณ๋ฅผ ๋ํ๋ผ ๋๋ง ์ฌ์ฉํด์ผ ํ๋ค.
โ๏ธ ํ์๋ฅผ ํฌํจํ์ง ์๋๋ค
GET http://catromi.tistory.com/v1/get/1 # โ ์๋ชป๋ ์
GET http://catromi.tistory.com/v1/1 # ๐ข ์ข์ ์
โ๏ธ ๋ฆฌ์์ค์๋ ํ์ฉ์ฌ๋ ๋์ฌ๊ฐ ์๋ ๋ช ์ฌ๋ฅผ ํ์ฉํ๋ค. (์ปจํธ๋กค ์์์ ์๋ฏธํ๋ ๊ฒฝ์ฐ์๋ง ์์ธ์ ์ผ๋ก ๋์ฌ๋ฅผ ์ฌ์ฉํ๋ค)
http://catromi.tistory.com/getUsers # โ ์๋ชป๋ ์
http://catromi.tistory.com/users # ๐ข ์ข์ ์
โ๏ธ URI์์๋ ํญ์ ๋จ์ํ ๋์ ๋ณต์ํ์ ์ฌ์ฉํ๋๋ก ํ๋ค.
http://api.college.com/students/3248234/course # โ ์๋ชป๋ ์
http://api.college.com/students/3248234/courses # ๐ข ์ข์ ์
โ Reference
'๊ฐ๋ฐ ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
URI vs URN vs URL ์ฐจ์ด์ ? (0) | 2023.08.18 |
---|---|
Spring DI (0) | 2023.08.17 |
DDD ์ค๊ณ, SQL ์ค์ฌ ์ค๊ณ (0) | 2023.08.03 |
[๊ฐ์ ์ ๋ฆฌ] ์ค์ ๋ก ์ปดํจํฐ๋ผ๋ฆฌ๋ IP์ฃผ์๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค (0) | 2023.05.20 |
[๊ฐ์ ์ ๋ฆฌ] ๋คํธ์ํฌ ๋ชจ๋ธ (1) | 2023.05.13 |