Rest Fulν μ€κ³ λΌλ ννμ μ λ§ λ§μ΄ λ€μ΄λ΄€μ§λ§ λͺ ννκ² μ€λͺ ν μ μμλ€.
μ νν λͺ¨λ₯Έ μ±λ‘ APIλ₯Ό λ§λ€λ€λ³΄λ κ²°κ³Όλ¬Όλ‘ λ°μ API λ¬Έμκ° μλ§μ΄μλ€.
μ΄λ² κΈμ ν΅ν΄ κ°λ μ μ 립νκ³ λ΄κ° μ€κ³ν APIλ₯Ό μμ ν΄λ³΄λ©΄ μ’μ κ² κ°λ€.
μ λͺ© λ©μλ URL νΉμ μ νμ μ΅μ λͺ©λ‘ μ‘°ν GET
/api/options/{product_id}
μλ‘μ΄ μ΅μ μΆκ° POST
/api/options/{product_id}
μ΅μ μμ DELETE
/api/options/{option_id}
APIλ Application Programming Interface, μ¦ μ΄ν리μΌμ΄μ
νλ‘κ·Έλλ° μΈν°νμ΄μ€λ€.
μΈν°νμ΄μ€λ μ΄λ€ μ₯μΉμ μ₯μΉλ₯Ό μ°κ²°ν΄μ£Όλ μ₯μΉλ₯Ό λ§νλ€.
λ°λΌμ APIλ μ΄ν리μΌμ΄μ
νλ‘κ·Έλ¨λΌλ¦¬ ν΅μ ν μ μλλ‘ νλ μ₯μΉ,μν€ν
μ²μ΄λ€.
π
ββοΈ ν¨μλ νλ‘κ·Έλ¨ λ΄λΆμμ μ¬μ©νλ μ½λμ΄λ€.
μΌλ°μ μΌλ‘ APIλ₯Ό μ΄μΌκΈ° ν λλ μΈλΆμ λ€λ₯Έ νλ‘κ·Έλ¨μ΄λ λͺ¨λμ΄ μ¬μ©νλ μΈν°νμ΄μ€λ₯Ό λ§νλ€.
APIλ μ΄ν리μΌμ΄μ λΌλ¦¬ ν΅μ νλλ‘ νλ κ²μ΄λ€. λ°λΌμ μΉμ΄ μλ APIλ μ‘΄μ¬νλ€.
μΉμ ν΅ν΄ ν΄λΌμ΄μΈνΈμ μλ²κ°μ ν΅μ μ ν μ μκ² νλ APIμ΄λ€.
π
ββοΈ λ€νΈμν¬ μͺ½ κ°λ
μ΄μ§λ§, λ€μν ν΅μ λ°©λ²μ΄ μ‘΄μ¬νλ€.
μλ°©ν₯ ν΅μ μ ν μ μλ WebSocketμ μ΄κΈ°μ°κ²°μλ§ httpλ₯Ό μ¬μ©ν ν μ°κ²°μ λμ§ μλλ€.
HTTPλ
μ£Όλ‘ μΉ νκ²½μμ ν΄λΌμ΄μΈνΈμ μλ²κ°μ ν΅μ μ κ΄λ¦¬νλ λ° μ¬μ©νλ λ€νΈμν¬ νλ‘ν μ½μ΄λ€.
HTTP APIλ HTTP νλ‘ν μ½μ μ¬μ©ν΄μ λ°μ΄ν°λ₯Ό κ΅ννλ APIλ₯Ό μλ―Ένλ€.
λ Rest APIλ REST μν€ν
μ²λ₯Ό λ°λ₯΄λ APIλ₯Ό λ§νλ€. λ°λΌμ λμμ΄λ μλμ§λ§ κ±°μ REST μν€ν
μ²λ₯Ό λ°λ₯΄λλ‘ APIλ₯Ό μ€κ³νκΈ° λλ¬Έμ λΉμ·ν μλ―Έλ‘ μ°μ΄λ μ€μ΄λ€.
REST APIλ₯Ό μ€λͺ νκΈ° μν΄μ HTTP API > μΉ API > API κΉμ§ μμ보μλ€. λ€μ REST API λ΄μ©μΌλ‘ λμμ€μ! βοΈ
REST μν€ν μ²λ HTTP νλ‘ν μ½μ μ₯μ μ νμ©ν μ μκ² νλ μΌμ’ μ μ€κ³λ°©λ²,μ§μΉ¨μμ΄λ€.
REST APIλ,μ΄λ° REST μ§μΉ¨μλ₯Ό μ μ§ν€ν¨ APIλΌκ³ ν μ μλ€.
λν REST FULνλ€λ ννμ RESTμ μ€κ³λλ₯Ό μ μ§μΌ°λ€λ κ²μ μλ―Ένλ€.
1) μΌκ΄μ μΈ μΈν°νμ΄μ€
2) 무μν : ν΄λΌμ΄μΈνΈμ μ΄μ μμ² μμνλ₯Ό μ μ₯νμ§ μλλ€. μλ²λ λ€μ΄μ€λ μμ²μλ§ μλ΅νκ³ μ²λ¦¬νλ€. μ΄λ₯Ό ν΅ν΄μ ꡬνμ΄ λ¨μν΄μ§κ³ μμ λκ° λμμ§λ€.
3) μΊμ μ²λ¦¬ κ°λ₯ : ν΄λΌμ΄μΈνΈλ μ€κ° μΊμμλ²μ μ μ₯λ μλ΅ λ°μ΄ν°λ₯Ό μ¬μ¬μ©νμ¬ μλ²κ° λ°λ³΅μνμ νλ κ²μ λ§μμ€λ€.
4) κ³μΈ΅ν : REST μλ²λ λ€μ€ κ³μΈ΅μΌλ‘ ꡬμ±λ μ μλ€.
5) μμ²΄λ‘ μ΄ν΄κ°λ₯ν΄μΌνλ€. : μ μ ν URI μ€κ³μ http λ©μλμ νμ©μ ν΅ν΄μ μ΄λ£° μ μλ€.
6) ν΄λΌμ΄μΈνΈ - μλ² κ΅¬μ‘° : ν΄λΌμ΄μΈνΈμ μλ²μ μν μ λͺ ννκ² κ΅¬λΆν μ μλ€.
μ΄κ±΄ λΆμΆ©λΆνλ REST APIλ₯Ό μ€κ³νκΈ° μν κ·μΉκ³Ό μμ λ₯Ό μ΄μΌκΈ°νκ² λ€.
κ·Έ μ μ μλ λκ°μ§ κ·μΉμ νμλ‘ μ§μΌμΌνλ κ·μΉμ΄λΌκ³ νλ€.
URIμλ CRUDμ κ°μ μμμ λν νμλ₯Ό λ΄μ§ μκ³ , μμμ λνλ΄λ μλ¨μΌλ‘λ§ μ¬μ©νλ€.
λν URIμ μμμ κ°μ²΄λ³΄λ€λ μν°ν°λ₯Ό λ»νλ€. μ‘°κΈ λ μ§ν©μ κ°λ μΌλ‘ μ°μ΄κΈ° λλ¬Έμλ¨μν보λ€λ 볡μνμΌλ‘ λνλΈλ€.
HTTP λ©μλλ GET
, POST
, PUT
, DELETE
, PATCH
λ±μ΄ μλ€.
URIλ‘ ννν μμμ λν νμλ HTTP λ©μλλ₯Ό μ¬μ©ν΄μ νννλ κ²μ΄λ€.
GET /members/1 : -> 1λ² μ μ μ μ 보λ₯Ό κ°μ Έμ¨λ€.
DELETE /members/1 : -> 1λ² μ μ μ μ 보λ₯Ό μμ νλ€.
μμ²λΌ νμμ€λͺ μ HTTP λ©μλλ₯Ό μ¬μ©νλ κ²μ΄λ€.
URIμμ μμμ 볡μλ‘ ννλκ³ , λ¨μΌ μμ(document
) μ μ κ·Όν λλ μμ 컬λ μ
μ κ³ μ μλ³μλ₯Ό μΆκ°ν΄μ νννλ€.
/users : μ¬μ©μ 컬λ μ
/users/1 : μλ³μκ° 1μΈ λ¨μΌ μ¬μ©μ
/sports/soccer
/sports/soccer/players/13
(ex) GET /cars/811/drivers/ > μ°¨811 μ λλΌμ΄λ² 리μ€νΈλ₯Ό λ°ννλ€.
(ex) GET /cars/811/drivers/4 > μ°¨ 811μ 4λ² λλΌμ΄λ² μ 보λ₯Ό λ°ν.
* κ³μΈ΅ κ΄κ³λ₯Ό λνλΌ λ μ¬λμ(`/`)λ₯Ό μ¬μ©ν μ μλ€.
쿼리 νλΌλ―Έν°λ‘ κ²μμ 쑰건, νμ΄μ§λ€μ΄μ , μ λ ¬κΈ°μ€ λ±λ±μ ννν μ μλ€.
GET /users?fields=id,name,email : μ¬μ©μ λͺ©λ‘μμ id, name, email νλλ§ λ°ν
μλ API λ¬Έμλ μ΄λ€ λ¬Έμ μ μ΄ μμκΉ?? π€
μ λͺ© λ©μλ URL νΉμ μ νμ μ΅μ λͺ©λ‘ μ‘°ν GET
/api/options/{product_id}
μλ‘μ΄ μ΅μ μΆκ° POST
/api/options/{product_id}
μ΅μ μμ DELETE
/api/options/{option_id}
κ³μΈ΅ν ꡬ쑰λ₯Ό κ³ λ €νλ€λ©΄ ν¬ν¨λλ 컬λ μ
μ΄ λ€μ μ¨λ€.
products
> options
μμκ° λ μ μ ν κ²μ΄λ€.
컬λ μ
λ€μ μ€λ κ°μ κ·Έ 컬λ μ
μ λνλ¨ΌνΈλ₯Ό λνλΈλ€.
options
λ€μ μ€λ μλ³μ κ°μ {option_id}
μ΄ μ μ ν κ²μ΄λ€.
ν΅μΌμ±μ μ§ν€μ§ λͺ»νλ€λ λ¬Έμ μ λ μλ€.
μ λͺ© λ©μλ URL νΉμ μ νμ μ΅μ λͺ©λ‘ μ‘°ν GET
/api/products/{product_id}/options
μλ‘μ΄ μ΅μ μΆκ° POST
` /api/products/{product_id}/options
μ΅μ μμ DELETE
/api/products/{product_id}/options/{option_id}
ν΅μΌμ±μ κ°μ§κ² λμκ³ μ»¬λ μ >λνλ¨ΌνΈμ κ·μΉκ³Ό μ μ ν κ³μΈ΅ ꡬ쑰λ₯Ό κ°μ§κ² λμλ€ ππ
λ΄ μν©
- λ΄ μλ²μμ μΉ΄μΉ΄μ€ APIλ₯Ό μ¬μ©νκΈ° μν΄ μ¬μ©μλ³ ν ν°μ μ¬μ©ν΄μΌνλ€.
REST APIλ₯Ό μν΄μλ 무μνλ₯Ό μν΄ μλ²κ° ν΄λΌμ΄μΈνΈμ μνλ μ 보λ₯Ό μ μ₯νμ§ μλλ‘ νμ§λ§ 보μ μ μ΄ ν ν°μ μ£Όκ³ λ°μ§ μκ³ μλ² λ΄λΆμμλ§ μ¬μ©ν΄μΌνλ€.
μ κ²½μ°μλ 보μμ μν΄μ 무μνμ±μ κΉ¨λ κ²μ΄ λ μ μ ν κ²μ΄λ€. μ΄μ²λΌ λͺ¨λ REST APIλ₯Ό μ격νκ² μ§ν€λ κ²μ΄ μλλΌ μ€λ¬΄ μ΄μ λ³λ‘ μ μ ν λμ μ κ³ λ €ν΄μΌνλ€.
AWS RestFul API
https://meetup.nhncloud.com/posts/92
https://jins-dev.tistory.com/entry/Rest-API-%EC%84%A4%EA%B3%84%EB%A5%BC-%EC%9C%84%ED%95%B4-%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EC%95%8C%EC%95%84%EC%95%BC%ED%95%A0-10%EA%B0%80%EC%A7%80-%EC%B2%B4%ED%81%AC-%EB%A6%AC%EC%8A%A4%ED%8A%B8