URIλ μ 보μ μμμ ννν΄μΌ νλ€ μμμ λν νμλ HTTP Method(GET, POST, PUT, DELETE λ±)μΌλ‘ νννλ€
π
GET /users/show/1
π
GET /users/1
URIλ μμμ ννν΄μΌ νλ―λ‘, showμ κ°μ νμκ° ν¬ν¨λλ©΄ μλλ€. showλ HTTP MethodμΈ GETμ ν΅ν΄ μΆ©λΆν νν κ°λ₯νλ€.
μμμ Collection
κ³Ό Element
λ‘ λλμ΄ ννν μ μκ³ , μλ ν
μ΄λΈμ κΈ°μ΄νμ¬ μλ² λλΆλΆκ³Όμ ν΅μ ννλ₯Ό ννν μ μλ€.
PUT
μ ν΄λΉ μμμ μ 체λ₯Ό κ΅μ²΄νλ€λ μλ―Έ
PATCH
λ μΌλΆλ₯Ό λ³κ²½νλ€λ μλ―Έ
β update
μ΄λ²€νΈμμ PUTλ³΄λ€ μλ―Έμ μΌλ‘ λ μ ν©νλ€λ νκ°
π
GET /users/1/
π
GET /users/1
π
POST /users/post_comments
π
POST /users/post-comments
π
POST /users/postComments
π
POST /users/post-comments
ν¨μμ²λΌ, 컨νΈλ‘€ μμμ λνλ΄λ URLμ λμμ ν¬ν¨νμ¬ λͺ λͺ νλ€.
π
POST /posts/duplicating
π
POST /posts/duplicate
-
200 : OK
-
201 : CREATED
- 200κ³Ό λ¬λ¦¬ μμ²μ μ±κ³΅νκ³ , μλ‘μ΄ λ¦¬μμ€λ₯Ό λ§λ κ²½μ°μ μλ΅
- POST, PUT
- 200κ³Ό λ¬λ¦¬ μμ²μ μ±κ³΅νκ³ , μλ‘μ΄ λ¦¬μμ€λ₯Ό λ§λ κ²½μ°μ μλ΅
-
202 : ACCEPTED
-
ν΄λΌμ΄μΈνΈ μμ²μ λ°μ ν, μμ²μ μ ν¨νμ§λ§ μλ²κ° μμ§ μ²λ¦¬νμ§ μμ κ²½μ°
- λΉλκΈ° μμ
- μμ²μ λν μλ΅μ΄ μΌμ μκ° ν μλ£λλ μμ μΈ κ²½μ°
- μμ μλ£ ν ν΄λΌμ΄μΈνΈμ μ릴 μ μλ server push μμ μ νκ±°λ, ν΄λΌμ΄μΈνΈκ° ν΄λΉ μμ μ μ§ν μν©μ μ‘°νν μ μλ URI μλ΅ν΄μΌν¨
HTTP/1.1 202 Accepted { "links": [ { "rel": "self", "method": "GET", "href": "https://api.test.com/v1/users/3" } ] }
-
-
204 : NO Content
- μλ΅ bodyκ° νμμλ μμ μμ μμ²(DELETE) κ°μ κ²½μ°
- 200 μλ΅ ν null, {}, [], falseλ₯Ό return νλ κ²κ³Ό λ€λ₯΄λ€. μμ HTTP Bodyκ° μμ
-
400 : [Bad Request]
-
ν΄λΌμ΄μΈνΈ μμ²μ΄ 미리 μ μλ νλΌλ―Έν° μꡬμ¬νμ μλ°ν κ²½μ°
-
νλΌλ―Έν°μ μμΉ(
path
,Βquery
,Βbody
), μ¬μ©μ μ λ ₯ κ°, μλ¬ μ΄μ λ±μΒ λ°λμΒ μλ¦°λ€- case 1
{ "message" : "'name'(body) must be Number, input 'name': test123" }
- case 2
{ "errors": [ { "location": "body", "param": "name", "value": "test123", "msg": "must be Number" } ] }
-
-
401 : [Unauthorized]
-
403 : [Forbidden]
- ν΄λΉ μμ²μ μ ν¨νλ μλ² μμ μ€ μ κ·Όμ΄ νμ©λμ§ μμ μμμ μ‘°ννλ €λ κ²½μ°
- μ κ·Ό κΆνμ΄ μ μ²΄κ° μλ μΌλΆλ§ νμ©λμ΄ μμ²μμ μ κ·Όμ΄ λΆκ°ν μμμ μ κ·Ό μλν κ²½μ° μλ΅νλ€.
-
404 : [Not Found]
-
405 : [Method Not Allowed]
- 405 codeλ 404 codeμ νΌλλ μ μκΈ° λλ¬Έμ λ£°μ μ μ νκ³ μμνλ€.
POST /users/1
μ κ²½μ° 404λ‘ μλ΅νλ€κ³ μκ°ν μ μμ§λ§, κ²½μ°μ λ°λΌΒ 405λ‘ μλ΅ν μ μλ€.Β/users/:id
Β URLμ GET, PATCH, DELETE methodλ νμ©λκ³ POSTλ λΆκ°ν URLμ΄λ€.- λ§μ½ idκ°Β
1
μΈ μ¬μ©μκ° μλ κ²½μ°μ 404λ‘ μλ΅νμ§λ§(GET, PATCH, DELETEμ κ²½μ°),ΒPOST /users/1
λΒ/users/:id
Β URLμ΄ POST methodλ₯Ό μ 곡νμ§ μκΈ° λλ¬Έμ 405λ‘ μλ΅νλ κ² μ³λ€.
- λ§μ½ idκ°Β
Allow: GET, PATCH, DELETE
Β HTTP headerμ νμ© κ°λ₯ν methodλ₯Ό νμνλ€.
-
409 : [Conflict]
-
ν΄λΉ μμ²μ μ²λ¦¬κ° λΉμ§λμ€ λ‘μ§μ λΆκ°λ₯νκ±°λ λͺ¨μμ΄ μκΈ΄ κ²½μ°
-
e.g.)Β
DELETE /users/hak
μ κ²½μ°, λΉμ§λμ€ λ‘μ§μ μ¬μ©μμ λͺ¨λ μμμ΄ λΉμ΄μμ λλ§ μ¬μ©μλ₯Ό μμ ν μ μλ κ·μΉμ΄ μμ λ 409λ‘ μλ΅νλ€.409 Conflict { "message" : "first, delete connected resources." "links": [ { "rel": "posts.delete", "method": "DELETE", "href": "https://api.test.com/v1/users/hak/posts" }, { "rel": "comments.delete", "method": "DELETE", "href": "https://api.test.com/v1/users/hak/comments" } ] }
-
-
429 : [Too Many Requests]
Retry-After: 3600
(HTTP Headers)- DoS, Brute-force attack κ°μ λΉμ μμ μΈ μ κ·Όμ λ§κΈ° μν΄ μμ²μ μλ₯Ό μ ννλ€.
μλ‘μ΄ Item μμ±νκ±°λ κΈ°μ‘΄μ Itemμ μμ νλ κ²½μ°, μμ±/μμ Formμ μ΄λ»κ² μ 곡ν΄μΌ ν κΉ?
β Form μ체λ‘λ μ λ³΄λ‘ μ·¨κΈ
REST APIλ URIκ° νλ«νΌ μ€λ¦½μ μ΄μ΄μΌ νκΈ° λλ¬Έμ, Request Headerμ User-Agent
κ°μ μ°Έμ‘°νλ κ²μ΄ μ’λ€.
μμ΄ν°μμμ User-Agent>
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3
μΆμ²