β
HTTP (Hypertext Transfer Protocol: νμ΄νΌλ³Έλ¬Έ μ μ‘κ·μ½)
: μΈν°λ·μμ, μΉ μλ²μ μ¬μ©μμ μΈν°λ· λΈλΌμ°μ μ¬μ΄μ λ¬Έμλ₯Ό μ μ‘νκΈ° μν΄ μ¬μ©λλ ν΅μ κ·μ½μ λ§νλ€.
HTML λ¬Έμμ μ΄λ―Έμ§, λμμ, μ€λμ€, ν μ€νΈ λ¬Έμ λ±μ μ£Όκ³ λ°λλ€.
+ μλ²μ REST APIλ‘ μμ²μ λ³΄λΌ λ HTTP κ·μ½μ λ°λΌ μ νΈλ₯Ό μ μ‘νλ€.
β
β
β
β
β
β
REST
(Representational State Transfer : λνμ μν μ λ¬ )
μν μ λ¬: λ°μ΄ν°κ° μμ²λμ΄μ§λ μμ μμ μμμ μν(μ 보)λ₯Ό μ λ¬νλ κ²μ λ»νλ€.
:μΉ μμ€ν (λΆμ°λ νμ΄νΌλ―Έλμ΄ μμ€ν μ μν μν€ν μ³ μ€νμΌ)ꡬ쑰, HTTP νλ‘ν μ½ μ₯μ μ μ΄λ¦΄ μ μλ λ€νΈμν¬ κΈ°λ° μν€ν μ²
REST API -> REST νμμ API
β
+API λ΄μ© μ 리
https://blog.naver.com/88yhtserof/222208729830
[Android] μλλ‘μ΄λ API
βAPI ( application programming interface : μμ© νλ‘κ·Έλλ° μΈν°νμ΄μ€): μ΄μ체μ μ μμ©νλ‘κ·Έλ¨ ...
blog.naver.com
β
β
λ³΄ν΅ RESTλ HTTP λ₯Ό ν΅ν΄ CRUDCreate(μμ±), Read/Retrieve(μ½κΈ°/μΈμΆ), update(κ°±μ ), Delete/Destroy(μμ /νκ΄΄) λ₯Ό μ€ννλ APIλ₯Ό λ»νλ€.
->REST μ κ°μ₯ μ€μν νΉμ±: μ΄λ€ λμμ΄λ μ 보λ₯Ό νμν κ²μΈμ§ λ°λ‘ μ μ μλ€.
β
RESTλ HTTPκ° κ°λ₯ν λͺ¨λ κ³³μμ μ¬μ©ν μ μλ€.
HTTP νλ‘ν μ½μ μ΄μ©νκΈ° λλ¬Έμ URLroute λ₯Ό ν΅ν΄ μμμ νΉμ μ§κ³ HTTP vebsλμ¬ λ₯Ό ν΅ν΄ ν μΌ(CRUD)μ μ§μ νλ€. λν JSON λλ XMLλ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°λ κ²μ΄ μΌλ°μ μ΄λ€.
β
β
β
β
β
<RESTλ₯Ό μ μνκΈ° μν 쑰건>
β
1. ν΄λΌμ΄μΈνΈ - μλ² κ΅¬μ‘°
: μμ(resource)μ΄ μλ μͺ½μ΄ μλ², ν΄λΌμ΄μΈνΈλ κ·Έμ μ 곡λλ μΈν°νμ΄μ€λ₯Ό ν΅ν΄ μ κ·Όνμ¬ μλ΅μ λ°κ³ μλ²λ ν΄λΌμ΄μΈνΈμ μνλ μ κ²½ μ°μ§ μκ³ μ 곡ν μΈν°νμ΄μ€μ λν μ²λ¦¬λ§ λ΄λΉνμ¬ μμ²μ΄ λ€μ΄μ¬ λ κ·Έμ λ§λ μλ΅μ μ 곡νλ©΄ λλ€. μ΄λ κ² μν μ΄ νμ€νκ² κ΅¬λΆλλ©΄ μλ‘μ κ°λ°μ μμ΄μ μμ‘΄μ±μ΄ μ€μ΄λ€κ² λλ€.
β
β
β
2. 무μνstateless: μλ²λ μμ²μ λ 립μ μΌλ‘ μΈμν΄μΌ νλ€.
β
3. μΊμ μ²λ¦¬ κ°λ₯Cacheable: λλμ μμ²μ ν¨μ¨μ μΌλ‘ μ²λ¦¬νκΈ° μν΄ μΊμκ° μꡬλλ€.
β
4. κ³μΈ΅νLayeres System
: μλ²λ API μλ²μ μ¬λ¬ κ³μΈ΅μ μΆκ°νμ¬ μ μ°ν κ΅¬μ‘°λ‘ κ°λ°λ μ μλ€. ν΄λΌμ΄μΈνΈλ μ΄μ μκ΄μμ΄ REST API μλ²λ§ νΈμΆνλ€.
β
5. Code on demand optional
:ν΄λΌμ΄μΈνΈκ° 리μμ€μ λν ννμ μλ΅μΌλ‘ λ°μ ν μ²λ¦¬νλ Codeλ₯Ό μλ²κ° μ 곡νλ κ²μ μλ―Ένλ€.
β
6. μΈν°νμ΄μ€ μΌκ΄μ±
β
β
β
β
β
β
β
β
RESTful
RESTλ 쑰건 ꡬνλ°©μμ μ μ½μ λμ§ μκΈ° λλ¬Έμ ꡬ체μ μΈ κ°μ΄λλΌμΈμ μλ€. λ€λ§ μ¬λ¬ κ°λ°μλ€μ΄ λΉκ³΅μμ μΌλ‘ μ견μ μ μν RESTfulμ ν΅ν΄ κ°μ΄λλΌμΈμ΄ μ μλλ€.
λͺ©ν: μ΄ν΄νκΈ° μ½κ³ μ¬μ©νκΈ° μ¬μ΄ REST API μμ±
β
CRUD | HTTP verbs | Route |
resourceλ€μ λͺ©λ‘μ νμ | GET | https://(λλ©μΈ)/resource |
resource νλμ λ΄μ©μ νμ | GET | https://(λλ©μΈ)/resource/:id(νμν λ΄μ©μ μΈλ±μ€) |
resourceλ₯Ό μμ± | POST | https://(λλ©μΈ)/resource |
resourceλ₯Ό μμ | PUT | https://(λλ©μΈ)/resource/:id(μμ ν λ΄μ©μ μΈλ±μ€) |
resourceλ₯Ό μμ | DELETE | https://(λλ©μΈ)/resource/:id(μμ ν λ΄μ©μ μΈλ±μ€) |
μΌλΆ resource μμ | PATCH | https://(λλ©μΈ)/resource/id(μμ ν λ΄μ©μ μΈλ±μ€) |
GET
: κ°μ Έμ€κΈ°. λ§ν¬λ₯Ό ν΄λ¦νκ±°λ μ£Όμ νμμ€μ URLμ μ λ ₯ν λλ§λ€ λΈλΌμ°μ κ° μ¬μ©νλ κ²μ΄λ€. URLλ‘ μλ³λ λ°μ΄ν°λ₯Ό ν΄λΌμ΄μΈνΈλ‘ μ μ‘νλλ‘ μλ²μ μ§μνλ€. GETμ μμ² κ²°κ³Όλ‘ μλ² μΈ‘μμ κ²μ΄ν°λ₯Ό μμ ν΄μλ μλλ€. GETμ μ½κΈ° μ μ©μ΄λ€.
β
PUT : λκΈ°. ν΄λΌμ΄μΈνΈκ° URLμ μν΄ μλ³λλ 리μμ€λ₯Ό μ λ°μ΄νΈ μμ² μ μ¬μ©νλ€.
β
POST : κ²μ. μ 리μμ€λ₯Ό μμ±ν λ μ¬μ©νλ€.
β
DELETE : μμ . μμ² UPLλ‘ μλ³λλ 리μλ₯Ό μμ μμ² μ μ¬μ©νλ€.
β
PATCH: μΌλΆ resourceλ₯Ό μμ μμ² μ μ¬μ©
β
+ POST/ PUT/PATCHμλ BODYλΌλ μ£Όλ¨Έλκ° μμ΄ μ 보λ₯Ό GETμ΄λ DELETE λ³΄λ€ λΉκ΅μ μμ νκ³ λ§μ΄ λ³΄λΌ μ μλ€.
β
β
RESTfulνμ§ λͺ»ν μ:
- CRUDκΈ°λ₯μ λͺ¨λ POSTλ‘λ§ μ²λ¦¬νλ API
- Routeμ resource, id μΈ μ λ³΄κ° λ€μ΄κ°λ κ²½μ°
(/students/updateName, student νλμ μ΄λ¦λ§ λ³κ²½νλ APIμ κ²½μ° PUT students/:id/nameμ΄ λμ΄μΌ ν©λλ€.)
β
β
β
β
β
<μλ΅μ½λ>
:HTTP μλ΅μ½λλ ν΄λΌμ΄μΈνΈμκ² μμ²κ²°κ³Όλ₯Ό μλ €μ€λ€.
μν μ½λ | μ©λ‘ |
200 OK | μμ²μ μ±κ³΅μ μΌλ‘ μ²λ¦¬ν¨ |
201 Created | μ 리μμ€ μμ± μ±κ³΅. PUT λλ POST μμ²μ μ±κ³΅μ νμΈνλ λ° μ¬μ© |
400 Bad Request | μμ² νμμ΄ μλͺ»λ¨. νΉν λ°μ΄ν°κ° μ ν¨μ± κ²μ¬λ₯Ό ν΅κ³Όνμ§ λͺ©νκ±°λ μλͺ»λ νμμ΄ κ²½μ° POST λλ PUT μμ²μμ λ°μνλ€. |
404 Not Found | μμ²ν 리μμ€κ° μμ. |
β
β
β
β
β
β
β
β
β
[μ©μ΄ μ 리]
β
μν€ν μ²(Architecture): μ»΄ν¨ν°λ₯Ό κΈ°λ₯λ©΄μμ λ³Έ ꡬμ±λ°©μ, μ΅μ νλ₯Ό λͺ©νλ‘ λκ³ μμ€ν ꡬμ±κ³Ό λμμ리 κ·Έλ¦¬κ³ μμ€ν μ ꡬμ±νκ²½ λ€μ μ±λͺ λ° μ€κ³νλ μ€κ³λ
β
νμ΄νΌλ―Έλμ΄(hypermedia) : νμ΄νΌ ν μ€νΈμ μ±μ§κ³Ό λ©ν° λ―Έλμ΄μ μ±μ§ λͺ¨λλ₯Ό κ°λ κ²μΌλ‘μ λ¨μ§ ν μ€νΈ λΏλ§μ΄ μλλΌ λ©ν°λ―Έλμ΄ μ λ³΄μΈ ν μ€νΈ, μμ±, μμλ ν¬ν¨νμ¬ μ 보λ₯Ό ꡬμ±ν κ²μ λ§νλ€.
β
URL: μμ νλ €λ νλͺ©μ μλ³νλ λ°©λ²
URLμ μμ(resource)λ₯Ό μλ³νλλ° μ¬μ©νλ€.(μμ-μΉνμ΄μ§) resourceλ₯Ό κ³ μ νκ² μλ³ν μ μλλ‘ URLλ₯Ό μμ±ν΄μΌνλ€. URLμ μ ν리μΌμ΄μ μ΄ μ²λ¦¬νλ λͺ¨λ λ°μ΄ν°μ μ§λ μν μ νλ€.
β
CRUD(Create(μμ±), Read/Retrieve(μ½κΈ°/μΈμΆ), update(κ°±μ ), Delete/Destroy(μμ /νκ΄΄)
β
β
β
β
β
https://www.youtube.com/watch?v=iOueE9AXDQQ
μ°Έκ³ μμ (μΆμ²)
https://m.blog.naver.com/azure0777/221066646741
μ°Έκ³ μλ£
https://tuhbm.github.io/2019/04/24/architecture/
μ°Έκ³ μλ£
https://mmlab.snu.ac.kr/~shlee/MMCW/doc1_1.htm
μ°Έκ³ μλ£
https://duehd88.tistory.com/entry/CRUD%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
μ°Έκ³ μλ£
https://code.tutsplus.com/tutorials/a-beginners-guide-to-http-and-rest--net-16340
μ°Έκ³ μλ£
https://code.tutsplus.com/tutorials/a-beginners-guide-to-http-and-rest--net-16340
μ°Έκ³ μλ£
'Android' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Android]Retrofit2μ REST API ν΅μ 1 ( Kotlin ) (0) | 2021.06.18 |
---|---|
URL μ£Όμμ μλ―Έμ κ΅¬μ± (0) | 2021.06.18 |
[Android] μλλ‘μ΄λ API (0) | 2021.06.18 |
[Kotlin] μ½νλ¦° μμ±μ ( Constructor ) (0) | 2021.06.18 |
[Kotlin] λ³μμ ν¨μ 1 (0) | 2021.06.18 |