Closed khw7096 closed 4 years ago
코드
if r.Method == http.MethodPost{
//blahblah
} else if r.Method == http.MethodDelete {
var itemtype, id string
r.ParseForm()
for key, values := range r.Form {
switch key {
case "type":
if len(values) != 1 {
http.Error(w, "type을 설정해 주세요", http.StatusBadRequest)
return
}
itemtype = values[0]
fmt.Printf("itemtype: %s\n", itemtype)
case "id":
fmt.Println("debug3")
if len(values) != 1 {
http.Error(w, "id를 설정해 주세요", http.StatusBadRequest)
return
}
id = values[0]
fmt.Printf("id: %s\n", id)
}
}
csi는 이것때문에 그냥 restfull + /api/rmitem(POST) 이 섞이긴 했죠.
헤더에 url이 들어가 있을 테니.. /api/item/{id} 형태는 될듯하기도 한데.. 이방식은 /uri?key=value
앞으로 사용되는 쿼리방식과 차이가 있어요.
https://medium.com/@etiennerouzeaud/how-to-create-a-basic-restful-api-in-go-c8e032ba3181
위 링크에서도 결국 /api/v1/users/1 형태로 삭제를 하고 있어요.
카카오도 DELETE를 쓸 때 URI끝으로.. uri에 동사가 있긴 하지만.
https://developers.kakao.com/docs/restapi/quick-reference
또한 Delete 메소드는 전체 API에서 많지는 않아요.
rm REST API를 만들다가 다음과 같은 문제를 확인했어요.
그래서 찾아봤더니 DELETE 메소드일 땐 서버가 message body?를 무시하도록 되어있어서 그런거 같아요.
rfc7231 - 4.3.5
rfc2616 - 4.3
두 내용을 조합해보면 "DELETE의 body는 서버에 의해 무시된다".인 거 같아요 이 지점에서 어떻게 해결해야할지 고민중이에요 아는 방법이 있다면 알려주세요!