-
๐ | IT์ง์- API์ JSON๐ ๋ถ ์คํฐ๋/๋น์ ๊ณต์๋ฅผ ์ํ ์ดํดํ ์ ์๋ IT์ง์ 2024. 8. 13. 18:32
๋น์ ๊ณต์๋ฅผ ์ํ ์ดํดํ ์ ์๋ IT ์ง์ - 4์ฅ. API์ JSON
1. API์ CRUD
API
- ์ฌ์ฉํ๋ ์ด์ : ์ปดํจํฐ๋ ํ๊ธ์ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์, ์ฌ๋์ ์์ฒญ์ ์ปดํจํฐ๊ฐ ๊ตฌ๋ถํ ์ ์๋๋ก ์ฒด๊ณ๋ฅผ ์ก์ ๊ฒ
- ํด๋ผ์ด์ธํธ, ์๋ฒ์ ๊ฐ์ ์๋ก ๋ค๋ฅธ ํ๋ก๊ทธ๋จ(์ํํธ์จ์ด)์์ ์์ฒญ๊ณผ ์๋ต์ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ๋ง๋ ์ฒด๊ณ
- ์๋ก ๋ค๋ฅธ ์์คํ ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ ์ฒด๊ณ
- ์์ฒญ์ ๋ณด๋ด๋ ์ชฝ๊ณผ ์๋ต์ ์ฃผ๋ ์ชฝ์ด ๋๋์ด ์์
์๋ฒ์ฃผ์
- ์๋ฒ ์ปดํจํฐ๊ฐ ์์นํ ๊ณณ์ ์ฃผ์(IP) ์๋ฒ ๊ฐ๋ฐ์๊ฐ ๋ง๋ค๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ ์๋ฒ ํ๋ก๊ทธ๋จ์ด ๋๋ค.
- ์ฆ API๋ ์๋ฒ ๊ฐ๋ฐ์๊ฐ ๊ฐ๋ฐํ๊ณ ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ์๋ ๊ทธ API๋ฅผ ์ฌ์ฉ
- IP์ฃผ์ : 000.000.000.000๊ณผ ๊ฐ์ ์ซ์๋ก ์ด๋ฃจ์ด์ง
- ๋๋ฉ์ธ ๋ค์ : IP์ฃผ์๋ณด๋ค ๋์ฑ ์ดํดํ๊ธฐ ์ข๊ฒ ๋ฌธ์๋ก ๋ง๋ ๊ฒ. ex. https://sini12.tistory.com/
API๋ฅผ ๋ง๋ค ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ธฐ๋ฅ๋ ํจ๊ป ๋ฃ๋๋ค. ๋ฐ๋ผ์ API๋ฅผ ํตํด ์์ฒญ๊ณผ ์๋ต์ ์ฃผ๊ณ ๋ฐ์ ๋๋ ๋ฐ์ดํฐ๋ ๊ฐ์ด ๋ด๊ธด๋ค.
๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ๊ธฐ์ค์ด ๋๋ ์์ฒญ, CRUD (๋ธ๋ก๊ทธ๋ฅผ ๊ฐ์ ํ์ ๋)
- Create : (Post ์์ฑํด์ค)ํ์๋ผ์ธ์ ์ฌ์ง์ '์ฌ๋ฆฌ๋'์์ฒญ
- Read : (Get ๋ถ๋ฌ์์ค)ํ์๋ผ์ธ์ ์ฌ์ง์ '๋ถ๋ฌ์ค๋'์์ฒญ
- Update : (Put์ ์ฒด / Patch์ผ๋ถ ๋ฐ๊ฟ์ค)ํ์๋ผ์ธ์ ์ฌ์ง์ '๋ฐ๊พธ๋'์์ฒญ
- Delete : (Delete ์ง์์ค)ํ์๋ผ์ธ์ ์ฌ์ง์ '์ง์ฐ๋'์์ฒญ
๊ฐ๋ฐ์๋ค์ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ๋ ํญ์ CRUD์ ๊ด์ ์์ ์๊ฐํ๋ค. ์ด๋ณด ๊ธฐํ์๋ค์ ์ฝ์ง ์๊ธฐ ๋๋ฌธ์ '๋ฐ์ดํฐ๋ฅผ ๋ณผ ์๋ ์๋๋ฐ ๋ง๋๋ ๊ธฐํ์ ์๋'์ค์๋ฅผ ํ๊ธฐ๋ ํ๋ค. ์ด๋ฐ ์ค์๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด์๋ CRUD๊ด์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ผ๋ด์ผ ํ๋ค. ๋ง์ฝ CRUD ์ค ํน์ ๊ธฐ๋ฅ์ด ์๋ ๊ธฐํ์ด๋ผ๋ฉด, ๊ทธ ๊ธฐํ ์๋๊ฐ ๋ช ํํด์ผ ํ๋ฉฐ, ์ด์ ๋ ์ค๋ช ํ ์ ์์ด์ผ ํ๋ค.
ํ์๋ผ์ธ์ CRUD์์ฒญ์ ๊ฐ๊ฐ์ ์ฃผ์๋ฅผ ๊ฐ์ง๋๋ฐ, ์ฃผ์๊ฐ ๋๋ฌด ๋ง์์ง๊ณ ๊ด๋ฆฌํ๊ธฐ ํ๋ค๊ธฐ ๋๋ฌธ์ ์ฒด๊ณ์ ์ธ API์ฌํ ์ด๋์ธ ๋ง๋ค์ด์ง๋ค.
REST(Respresentational State Transfer)ํ API ์ฆ, RESTful API๋ผ๊ณ ํ๋ค.
์ (๋ณผ๋์ฒด)์คํฐ์ปค(๋ฉ์๋Method)๋ฅผ ์ฌ์ฉ
- ๋ฉ์๋ : 'ํจ์'์ ๊ฐ์์๋ฏธ. x๋ผ๋ ์ ๋ ฅ๊ฐ์ ๋ฐ๋ผ์ y๋ผ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ด
- ๋ณ์, ํ๋ผ๋ฏธํฐ : x๋ผ๋ ์
๋ ฅ๊ฐ
- ex. ๋ก๊ทธ์ธ ์์ฒญ์์ ํ์ํ ID์ ๋น๋ฐ๋ฒํธ : ๋ก๊ทธ์ธ ์์ฒญ์ ํ์ํ ์์ฒญ ๋ณ์ ํน์ ํ๋ผ๋ฏธํฐ
HTTP ์ํ์ฝ๋
์ปดํจํฐ๊ฐ ๋ณด๋ด๋ ์๋ต์ 2๊ฐ์ง์ด๋ค. "์ ๋์ด", "์ ์๋์ด"
- 2xx : ์๋์ด
์ ์๋ ๊ฒฝ์ฐ๋ ๋ณดํต ํด๋ผ์ด์ธํธ์ ์์ฒญ ๋๋ฌธ์, ์๋ฒ ๋ด๋ถ์ ์ผ๋ก ์๋ 2๊ฐ์ง์ ๊ฒฝ์ฐ๊ฐ ์๋ค.
- 4xx : ํด๋ผ์ด์ธํธ์ ์์ฒญ์์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ
- 404 ์๋ฌ ์ฝ๋ : ์ ์๋์ง ์์ ์์ฒญ์ ๋ณด๋ผ ๋. ์ฆ, ์๋ฒ๋ ๋ฌธ์ ์์ด ์ ๋์๊ฐ๊ณ ์๋๋ฐ ์์ฒญ์ด ์ด์
- 5xx : ์๋ฒ์์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ
SDK(Software Development Kit)
๋ค๋ฅธ ์ํํธ์จ์ด๋ฅผ ํ์ฉํ ๋, API๋ฅผ ์ ๊ณตํด์ฃผ๋ '๋ค๋ฅธ ์ํํธ์จ์ด'๋ฅผ ๋ถ๋ฅด๋ ๋ช ์นญ
- ex. ๋ด ์ํํธ์จ์ด์ ๊ตฌ๊ธ ์ง๋ SDK ์ค์น → ๊ตฌ๊ธ์ง๋ SDK์์ ์ ๊ณตํด์ฃผ๋ API์ฌ์ฉ
OPEN API
์๋ฒ๊ฐ ์ ๊ณตํ๋ API๋ฌธ์๋ก, ์ผ๋ฐ ์ฌ๋๋ค์ด ๋ค์ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ์ด์ด๋ API
2. JSON
JSON : API์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ํ์ ์ค ํ๋
"๊ทธ ์ ๋ณด๋ JSON์ผ๋ก ๋ณด๋์ด์." "๋ก๊ทธ์ธ API์๋ต ๋ณด๋ผ ๋, JSON์์ ๊ฐ์ด ๋ฃ์ด์ ๋ณด๋ผ๊ฒ์." "๊ทธ๊ฑด JSON์ ๋ค์ด์์ด์"
๋ํ๋ฅผ ๋ณด๋ฉด ๋ง์น JSON์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ฃผ๋จธ๋ ์ฒ๋ผ ์ฌ๊ธด๋ค. ํด๋ผ์ ์๋ฒ๋ ์์ฒญ๊ณผ ์๋ต์ ์ฃผ๊ณ ๋ฐ๊ณ , ๊ทธ ๋ ํ์ํ ๋ฐ์ดํฐ๋ค์ JSONํ์์ผ๋ก ์ฃผ๊ณ ๋ฐ๋๋ค.
{ "id":"sini12", "pw":"a12345" }
- ํ์ : ์ค๊ดํธ๋ก ์์, ํค(Key)์ ๊ฐ(Value)์ ์ฝ๋ก (:)์ผ๋ก ๊ตฌ๋ถ
- ์์ : ๋ก๊ทธ์ธ ์์ฒญ์์ ID์ ๋น๋ฐ๋ฒํธ
{ "category":"์๋ฃ" "sort":"desc", "items":["์นดํ๋ชจ์นด","์นดํ๋ผ๋ผ","์๋ฉ๋ฆฌ์นด๋ ธ"] }
- ๋ฐฐ์ด(Array) : []๋๊ดํธ๋ก ํ์
- ์ฌ๋ฌ ์ ๋ณด๊ฐ ํ์ํ ๋ ์ฌ์ฉ
'๐ ๋ถ ์คํฐ๋ > ๋น์ ๊ณต์๋ฅผ ์ํ ์ดํดํ ์ ์๋ IT์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ | IT์ง์_์ฑ, ์น (2) 2024.08.31 ๐ | ๋น์ ๊ณต์ PM์ ํ์ ์ ์ํ IT์ง์(feat. ํ๊ต ์ฌํฌ๋ฆฌ) (3) 2023.05.13