2012-12-27 1 views
0

siteblicks를 사용하여 4 개의 http 메소드 get, post, put 및 delete를 사용하여 간단한 휴식 서비스를 구현합니다. WebClient를 사용하여 정의 된 서비스에 삭제 요청을 보내려고하면 405 응답이 표시됩니다. 누가 그와 같은 반응을 얻는 지 아는 사람이 있습니까?삭제 방법을 사용할 때 sitebricks 응답이 405 상태 인 이유는 무엇입니까?

10 : 22 : 24.840 [QTP-6711891-2 @ 5907955 -/R/클라이언트/123] 디버그 org.mortbay.log - 응답/R/클라이언트/123 (405)

이것은 내가 웹을 사용하는 방법입니다

WebClient client = web().clientOf(delete(123)).transports(String.class).over(Json.class); 
    client.delete(); 

클라이언트

는 여기에 내가 부두 서버를 사용하고 내 삭제 방법

@Delete 
    @At("/:id") 
    public Reply delete(@Named("id") String id) { 
    clientsRepository.delete(id); 
    return Reply.saying().ok(); 
    } 

입니다.

답변

1

응답 코드 405는 무언가가 http DELETE 메서드 사용을 허용하지 않도록 구성되었음을 의미합니다.

사이트 링크 자체에 대해서는 말할 수 없지만 서블릿 스펙을 사용하면 특정 방법을 비활성화 할 수 있습니다.

웹 응용 프로그램의 web.xml 또는 ${jetty.home}/etc/webdefault.xml은 특정 HTTP 메소드 (예 : TRACE, PUT, DELETE) 사용을 허용하지 않도록 구성 할 수 있습니다.

DELETE에 대해 <http-method> 신고가있는 파일을 <security-constraints>에 확인하십시오.

또한 모든 코드가 405 응답 자체를 트리거 할 수 있습니다. Sitebricks에서 이것을보고 있기 때문에 web.xml에 <filter>이있을 수 있습니다.

1

요청 URI를 올바르게 구성하고 있습니까? 핸들러 메소드가 없으면 Sitebricks는 405를 리턴합니다. 이 테스트 케이스는 @Delete이 실제로 제대로 작동 않음을 확인합니다 :

https://github.com/dhanji/sitebricks/blob/master/sitebricks-acceptance-tests/src/main/java/com/google/sitebricks/example/RestfulWebServiceWithSubpaths2.java

을 또한 joakime 말한대로, 다른 필터 또는 핸들러 Sitebricks 외부에서 발사되었는지 확인 않습니다.

+0

예, 처리기 메서드가 있습니다. 또한 삭제 요청 데이터를 보내는 방법을 궁금해? 게시물로 나는 webClient.post (someData)를 할 수있다. 그러나 삭제가 아니다. – Adelin

관련 문제