2015-01-31 5 views
0

간단한 RESTful 서비스를 Slim으로 설정했습니다. 내가 예상치 못한 요청에게 405 메서드 허용되지 HTTP 상태 코드와 Slim 답변을 얻을 경우Slim : 잘못된 경로를 잡는 방법?

... 
$app->get('/persons/get', function() { getPersons(); }); 
$app->get('/persons/get/:id', function($id) { getPerson($id); }); 
$app->put('/persons/setprop/:id/:prop', function($id) { setPersonProp($id); }); 

$app->options('/.+', function() { options(); }); 

$app->run(); 

:
이 내 라우팅의 발췌 한 것입니다.
예기치 않은 요청을 받고 응답을 사용자 정의하려면 어떻게해야합니까?

UPDATE :
@Martin Turjak 제안, 나는 오류()와 NOTFOUND() 메소드를 추가했다, 그래서 이것은 내 현재 코드입니다 : 어떤 이유

... 
$app->get('/persons/get', function() { getPersons(); }); 
$app->get('/persons/get/:id', function($id) { getPerson($id); }); 
$app->put('/persons/setprop/:id/:prop', function($id) { setPersonProp($id); }); 

$app->options('/.+', function() { options(); }); 

$app->error(function(Exception $e) { 
    echo("Error:"); 
    var_dump($e); 
}); 
$app->notFound(function() { 
    echo("Not Found!"); 
}); 

$app->run(); 

,도 $ APP- > NOTFOUND()이나 $ APP-> 오류()를 호출, 예를 들어
:-(... 내가 잘못 경로에 대한 405 오류가 계속 ... 등록 할 것으로 보인다 http://localhost/myapp/api/persons/NOT_EXISTING_ROUTE

,

참고 :

답변

5

어떤 경로 요청과 일치하지 않는 경우 일반적으로 404 찾을 수 없음은 ... 나는 현재 같은 도메인 슬림 서비스를 테스트입니다,하지만 난 너무, 크로스 도메인을 작업해야 당신이 notFound 경로로 사용자 정의 할 수있는 ... 던져 :

$app->notFound(function() { ... }); 

은 내가 믿는 당신의 500 뭔가 다른 (당신이 당신의 getPerson 다른 모든 기능이 제대로 모든 것을 처리 여부를 확인 할 수 있습니다에 따라 발생해야 ... 내부 서버 오류가 요청 문제를 나타내서는 안됨) 그러나 일반 오류 경로를 사용하여 오류를 사용자 정의 할 수 있습니다.

그런 다음 오류 코드를 기반으로 사용자 정의 오류 응답 메시지를 렌더링 할 수 있습니다.


당신의 대답에 대한 Slim Error Handling

+0

감사이 여기에 더보고! 몇 가지 이유로 이제 ** 405 메소드가 허용되지 않습니다. ** 더 이상 ** 500 **이 아닙니다. (이전에 크로스 도메인을 테스트하고 있었지만, 앵귤러 앱은 포트 9000의 툴툴 거리기에 의해 제공되었습니다.). 불행히도 $ app-> notFound()도 $ app-> error()도 등록 된 것 같지 않습니다. (내 업데이트 참조). – MarcoS

관련 문제