Laravel에 대한 AngularJS $resource 요청 - POST 및 PUT
-
21-12-2019 - |
문제
REST 요청을 보내는 데 어려움을 겪고 있습니다. $resource
Laravel 애플리케이션에.가장 먼저, $resource
POST 메소드는 요청 페이로드를 전송하는데 Laravel에서는 이를 읽을 수 없으므로 전송 요청을 변환해야 했습니다. x-www-form-urlencoded
대신에 해당 형식으로 데이터를 직렬화하는 함수를 넣어야 했습니다.왜 이것이 기본값이 아닌가?
또 다른 문제는 이번에는 Laravel의 PUT 메서드입니다.Laravel RESTful 컨트롤러가 PUT 메소드를 지원하지 않는다는 것을 알았습니다.대신 POST 요청을 보내고 포함해야 합니다. _method: 'PUT'
매개변수로.즉석에서 만든 코드는 다음과 같습니다.
factory('User',function($resource){
return $resource(apiPath + 'user/:id', {}, {
update: {
method: 'POST',
params: {id: '@id'},
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
transformRequest: transform()
}
})
}
이제 PUT 요청을 보내려면 다음과 같이 해야 합니다.
var userData = {id: 1, firstName: 'John', lastName: 'Doe'};
userData._method = 'PUT';
User.update(userData);
그래서 설정하는 대신 _method
에게 'PUT'
수동으로 PUT 요청을 할 때마다 기본값으로 설정할 수 있는 방법이 있나요?아니면 제가 뭔가 잘못하고 있는 건가요? 더 좋은 방법이 있나요?나는 REST 전체를 정말로 이해하지 못합니다. 그것이 잘 지원되지 않는다면 요점은 무엇입니까(Laravel)?.Twitter API도 POST 및 GET만 사용합니다.내가 틀렸다면 정정해주세요.감사해요.
해결책
다음 방법을 시도해 보세요.
update: {
method: 'POST',
params: {id: '@id'},
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
transformRequest: function(data){
data._method = 'PUT';
return data;
}
}
다른 팁
나한테는 이 방법밖에 효과가 없었는데...
'update': {
url: 'urlTOApi/product/:id' + '?_method=PUT',
method: 'POST',
params: {id: '@id'},
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
},
제휴하지 않습니다 StackOverflow