2014-04-24 3 views
3

내가 작업하는 팀은 데이터를 필요로하는 웹 사이트에 데이터를 공개하기 위해 애플리케이션의 API 인터페이스를 만드는 중입니다. 요청 및 응답을 JSON 형식으로 보내지 만 현재 다음과 같은 문제로 인해 어려움을 겪고 있습니다. (; 4918 RFC를 WebDAV를) -THE 요청이 가 잘 형성했지만이었다HTTPD를 통한 JSON 오류 응답

422 처리 할 수 ​​없음 엔티티 : 그들은 422 오류 코드와 함께 필요한 데이터 누락 된 요청에 응답하는 자신의 API를 작성했습니다

의미 론적 오류로 인해 따라갈 수 없습니다.

요청이 처리됩니다 유효한 JSON 응답 객체는 응용 프로그램 서버에서 반환됩니다하지만 HTTPD 서버가 현재 응답을 차단하고 422 오류에 대한 일반 작성한 ErrorDocument에두고있다.

  1. ErrorDocument 지정 차단을 해제하고 바로 아파치 서버를 통해 투명하게 응용 프로그램 서버에서 JSON 응답을 반환
  2. 를 사용하여 작성한 ErrorDocument 처리기를하지만 주입 :

    가 할 수있는 방법이 있는지 구함 반환 된 메시지에 응답 본문 - 즉

    작성한 ErrorDocument 422 $ {RESPONSE_BODY}

다른 제안 사항을 환영합니다. 우리의 중간 솔루션은 응답에서 200 응답을 반환하고 오류 코드를 정의하는 것이지만 가능한 경우 HTTP 오류 코드를 사용합니다.

+0

지금 답변을 제공하지만 API 설정의 예제 경로를 제공 할 수 있습니다. 실제 도메인/호스트를 사용할 필요는 없지만 구조적 개요는 좋을 것입니다. – JakeGould

답변

0

API의 URL 구조를 모르는 상태에서 프레임 워크 용 PHP를 사용하는 JSON API에서 사용하는 것과 비슷한 것을 제안합니다. 이것을 서버 또는 웹 응용 프로그램의 루트 인 .htaccess 파일에 저장하십시오. 이것은 무엇을

ErrorDocument 422  /error/422 

/error/422의 URL 경로에 어떤 422 오류를 보낼 것입니다. 나는 또한 지금처럼 내 .htaccess하는 트래픽을 라우팅에 규칙이

http://api.mygreatserver.net/error/422 

: 이것은 당신이 당신의 서버 설정과 같이 있다고 가정한다 그래서 기본적으로 /error/422이 장면 뒤에 index.php?controller=error&id=422로 변환됩니다

RewriteRule  ^([a-z_-]+)/([0-9]+)/?$ index.php?controller=$1&id=$2 [QSA] 

을 . PHP 스크립트는 error으로 라우팅 한 다음 error422을 처리합니다 ... Et, voila!

그리고

어떻게 든 API 자체는이 같은 도메인의 경로로있는 경우 :

ErrorDocument 422  /api/error/422 

일반적인 목표는 어떤을 보내는 것입니다 :

http://www.mygreatserver.net/api/error/422 

그것은 다음과 같은 것이 될 수있다 422을 제어 내의 미리 결정된 경로에 추가하십시오. 그리고 그 컨트롤러 내에서 당신이 원하는 모든 맞춤 콘텐츠를 보내십시오.