2014-04-01 2 views
0

일반 텍스트, json 또는 xml 등 사용자가 서버로부터 응답을받는 형식을 선택할 수있게하고 싶습니다. . cowboy_req : meta/{2,3}를 호출하여 media_type을 검색 한 다음 응답 본문 인코딩에 사용해야합니다. 하지만 그 값은 content_types_provided (malformed_request, is_authorized, forbidden ...) 전에 콜백에서 사용할 수 없습니다.카우보이 REST 처리기의 오류 메시지에 대한 미디어 유형 처리 방법

카우보이 논리를 통합하고 media_type을 결정하기 위해 자체 코드를 작성해야합니까?

또는 media_type이 결정되기 전에 실행 된 모든 콜백을 무시하십시오.

요청 메타 데이터에 응답 메시지를 넣고 onresponse 후크로 인코딩 한 다음 응답 본문을 바꾸어야합니까?

어떻게해야합니까?

+0

"모든 상태 코드 응답 본문은 text/plain"(또는 application/json)이됩니다. 관리가 더 쉽습니다. –

답변

2

나는 당신이 꽤 똑똑하지 않다고 생각합니다. 똑바로부터 init/3rest_init/3 함수는 Request 매개 변수가 "전체 요청"이며 각 콜백에서 모든 헤더 또는 메타를 읽을 수 있습니다.

그리고 개인적으로 나는 헤더를 정의한 것입니다. (이미 Content-Type 헤더가 정의되어 있고, 헤더가 메타를 통해 존재해야합니다.)

일반적으로 카우보이의 REST 콜백은 요청을 처리하기위한 이해하기 쉬운 워크 플로우와 추가 기본 응답 코드만을 제공해야합니다. is_authorized/2에서 승인을 확인하고 참 또는 거짓 (튜플의 일부로)을 반환하면 카우보이가 논리로 앞으로 이동하거나 401 코드를 반환합니다. 확인 요청은 응답 형식에 따라 결정되어서는 안되지만 아직 수행하고 싶다면 Req 매개 변수에서이 Meta를 읽고이를 기반으로 true/false를 반환하십시오.

는 그리고 content_types_provided/2 유일한 차이점은 Content-Types 헤더 값과 기능 사이의 바인딩의 종류를 반환 할 것입니다. 나는 당신이 필요로하는 것은 이것에 기초 할 수 있다고 생각합니다.

+1

제 경우에는 각 요청에 대해 사람이 읽을 수있는 메시지가 포함 된 응답 본문을 반환하려고합니다. 물론 요청의 메타를 무시하고 헤더만으로 작업 할 수 있습니다. 이 경우 Accept 헤더의 값을 읽은 다음 content_types_provided list와 비교 한 다음 응답 본문에 적합한 형식을 알게됩니다. 모든 논리는 이미 카우보이 코드로 정의되어 있으므로 다시 구현하지 않는 방법을 찾고 있습니다. – boxx