문제

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'}
                },
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top