2014-10-31 4 views
0

AngularJS 프론트 엔드 및 Laravel 백엔드 (API로 설정)를 사용하여 래서 피 애플리케이션을 생성합니다. 레서피의 상세보기를 볼 때 사용자가 레서피를 삭제할 수있는 가능성을 갖기를 바랍니다. 그러므로 나는이 버튼을 추가했습니다 :AngularJS to Laravel 백엔드 API 결과 405 (메소드가 허용되지 않음)

이 기능을 요구 요식
<button class="btn btn-danger" ng-show="recipeData.id" ng-click="deleteRecipe(recipeData.id)"> 
    Delete 
</button> 

:

$scope.deleteRecipe = function(id) { 
    Recipes.destroy(id) 
     .success(function() { 
     $location.path('/'); 
     }) 
    } 

이 서비스/공장 사용 ..that :

destroy : function(id) { 
     return $http.delete('/api/recipes/' + id); 
    } 

를 요식해야 이 규칙에 따라 라우트 라우트 라우팅 규칙 :

Route::group(array('prefix' => 'api'), function() { 
    Route::resource('recipes', 'RecipeController'); 
    Route::resource('ingredients', 'IngredientController'); 
    Route::resource('nutrients', 'NutrientController'); 
    Route::resource('IngredientsByRecipe', 'IngredientsByRecipeController'); 
}); 

.. 그리고 우리 RecipeController에서 우리는 마무리 작업을 처리해야이 기능을 찾을 수 :

public function destroy($id) 
    { 
    Recipe::destroy($id); 
    return Response::json(array('success' => true)); 
    } 

어떻게 든 내가 내 브라우저 콘솔에서이 오류 메시지가 있기 때문에 작업이 얻을 수 없습니다 ..하지만를 : 나는 단자를 통해, 나는 오류를받을하지 않으며 특정 조리법은 문제없이 삭제됩니다, 그러나 아래이 명령을 실행 있을때 야

DELETE http://localhost:8000/api/recipes/4 405 (Method Not Allowed) 

.

curl -v -X DELETE http://localhost:8000/api/recipes/4 

이 문제는 CodeKits browser-auto-refresh-tool을 실행하는 동안에 만 발생합니다. 이유를 알아낼 수 없습니다. 아래 두 개의 헤더를 게시하여 이상한 점을 발견했는지 확인하십시오.

DELETE /api/recipes/8 HTTP/1.1 
Host: marcuss-macbook-air.local:5757 
Connection: keep-alive 
Accept: application/json, text/plain, */* 
Origin: http://marcuss-macbook-air.local:5757 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36 
Referer: http://marcuss-macbook-air.local:5757/edit/8 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: en-US,en;q=0.8,sv;q=0.6 
Cookie: __ngDebug=true; ckrp_ypos=0_0; laravel_session=eyJpdiI6IjFiVWRNSkZhK3hualwvS1FCd29SMk1vaVhJN0Q4Q1RJS1k2TDFnUHBQTWFzPSIsInZhbHVlIjoiOUtRUUFRbUJlaDcyZHJIZE1oQnphUm1wTlZiYmZoQ1VKZXdTWngwM1hLV2s3VjlrSzZ1b3E2Q0dsK1wvRk1mZlNHaG1wcWxBcjc5V2QzOVpSOXpHRElRPT0iLCJtYWMiOiJkNjliMDZjMThjYmVjZDZhZjU2N2ZmMzkwYTUzMjBmYmVlZDc4ZWVlZmFlOWY1YzE5NWYwZDIxNDkwNGU5YmRiIn0%3D 

CodeKit없이 : CodeKit으로

DELETE /api/recipes/7 HTTP/1.1 
Host: localhost:8000 
Connection: keep-alive 
Accept: application/json, text/plain, */* 
Origin: http://localhost:8000 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36 
Referer: http://localhost:8000/edit/7 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: en-US,en;q=0.8,sv;q=0.6 
Cookie: __ngDebug=true; laravel_session=eyJpdiI6Ik5iVWpESEYyRk45Yys5REV1OUdOcHlyTXd6YkNsSFlETTFlUkVhNjdseE09IiwidmFsdWUiOiJVRlFka1hERTBmMGJQb3dBQ2YyQmIzZnNGb2hab1VldmFhUUhHeE00czdqUytmVUdXQXRDbXJPc0lTRUpGZDY2K0V3alNHejRIY0JsdkNxQ1ExdlJoZz09IiwibWFjIjoiNzQ2YzIyODRkZjQ0ZTdjODI0YzYxMTVjMzc0ZTJhM2UzZmQyM2Y4OGIwYmJkMzU2ZWNiNzU1NzgzYzBkZDY0ZSJ9 

는 각도 (CodeKit 사용)하지만 통해 405'ed하려면 내 DELETE-요청에 대한 원인이 무엇되지 터미널 내 컬 요청을 통해 또는 Angular의 정상적인 사용?

미리 감사드립니다.

+1

가 laravel 경로가 정의됩니다

GitHub의에서 이에 대한 개방 문제가 있습니다? –

+0

그리고 개발자 도구의 네트워크 탭에있는 요청의 HTTP 헤더를 게시하십시오. –

+0

내 게시물을 경로로 업데이트했습니다. 이것은 요청한 요청의 HTTP 헤더입니다 : DELETE/api/recipes/4 HTTP/1.1 , 방법 : DELETE 상태 코드 : 405 메소드가 허용되지 않습니까? – user2624679

답변

1

CodeKit은 DELETE 메소드를 지원하지 않습니다. 이것이 다른 클라이언트와 함께 작동하는 이유입니다. #398

+0

감사합니다. 이 문제를 해결하는 방법을 알고 있습니까? – user2624679

+0

이것은 작동하지만 어쩌면 좋은 생각이 아닙니다. 메소드를 GET으로 변경하고 대신 GET 요청을 보내십시오. –

관련 문제