문제

내가 이것을한다면 :

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 귀하의 요청에서.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top