Rails XML 요청에 넣을 메소드를 설정하십시오
-
12-09-2019 - |
문제
내가 이것을한다면 :
curl -X POST -H 'Content-type: application/xml' -d '<person>...</person>' 'http://0.0.0.0:3000/people/12?_method=PUT'
"구, 넣고 삭제 요청 만 허용됩니다." 왜요? 레일 2.3.2
해결책 2
이것은 실제로 레일 최근 버전에서 오작동하는 것입니다. 솔루션은 HTTP 메소드를 PUT로 통과하는 것입니다. 중요 : 헤더의 전체 이름은 HTTP-X-HTTP-Method-Override이지만 Rails는 HTTP 접두사를 추가하므로 해당 부분을 트림해야합니다.
다른 팁
Luca는 맞습니다. 요청과 함께 X-HTTP- 메드-오버 라이더를 보내야합니다. _method = JSON 본체에 넣는 것은 저에게 효과가 없었습니다. 컬 명령 줄은 다음과 같습니다.
curl
-H "X-Http-Method-Override: put"
-H "Content-Type: application/json"
-d "{\"user\":{\"email\":\"blah@example.com\"}}"
www.site.com/users/username.json
잘못 될 수있는 몇 가지가 있습니다.
먼저, 당신은 a를 보내고 있습니다 POST
~와 함께 curl
,하지만 당신은 "마법"을 가지고 있습니다 _method
URL의 매개 변수로 설정되었습니다. PUT
. 오류에 따라 레일이 취하는 것처럼 들립니다. POST
권위있는 요청 유형으로. 그것없이 그것을 시도하고 무슨 일이 일어나는지 확인하십시오.
더 보행자 오류로 라우팅 ( config/routes.rb
허용하지 않도록 구성 할 수 있습니다 POST
사용하려는 조치 요청.
표준 RESTFUL 컨트롤러를 사용하는 경우 멤버에 액세스하기 때문에 합리적입니다 (/people/12
) 기본적으로 만 허용합니다 GET
, PUT
, 그리고 DELETE
.
나는 사용해 볼 것이다 curl -X PUT
그리고 떨어 뜨립니다 ?_method=PUT
귀하의 요청에서.
제휴하지 않습니다 StackOverflow