2015-02-03 4 views
1

저는 justinrainbow/json-schema 클래스를 사용하여 스키마에 대해 데이터의 유효성을 검사합니다. 그러나 나는이 오류가 발생 해요 :스키마 유효성을 검사하려면 MediaType이 application/schema + json이어야합니다.

Media type application/schema+json expected 

내 모든 JSON 파일에의 nginx에서의 ContentType을 변경하려고 할 수 있지만이 이해가되지 않습니다.

또 다른 방법은 라이브러리의 상수를 'application/json'(내 서버가 json 파일 용으로 제공함)으로 변경하는 것입니다. 다시 말하지만 소스를 변경하는 것이 좋지 않습니다.

justinrainbow/json-schema 클래스의 매개 변수로 전달할 수 있습니까? 스키마 + JSON 등 웹에 어떤 내용이 존재하지 않는 때문에

https://github.com/justinrainbow/json-schema

답변

0

나는 이것에 대한 해결책을 찾을 수 없습니다.

justinrainbow/json-schema/src/JsonSchema/Validator.php의 SCHEMA_MEDIA_TYPE을 'application/json'으로 바꿉니다.

URL이 아닌 로컬 경로로 파일을 제공 할 수도 있습니다.

+0

귀하의 의견은 귀하의 답변에 더 적합 할 수 있습니다. –

0

이제 라이브러리는 "json/application"을 추가로 지원하지만 다른 컨텐츠 유형에서는 오류가 발생합니다.

이를 방지하기 위해 기본 "JsonSchema \ 열린 우리당 \ UriRetriever을"확장 "confirmMediaType"재정의 할 수

class MyUriRetriever extends JsonSchema\Uri\UriRetriever { 

    public function confirmMediaType($uriRetriever, $uri) { 
     return; 
    } 
} 

$retriever = new \MyUriRetriever(); 

$refResolver = new JsonSchema\SchemaStorage($retriever); 
$schema = $refResolver->resolveRef($schema); 

$validator = new JsonSchema\Validator(new JsonSchema\Constraints\Factory($refResolver)); 
$validator->check($data, $schema); 

$ 데이터 :의 URL : JSON은 API

$ 스키마에서 응답을 디코딩 스키마

스키마에 대해 상대방의 API를 테스트 할 때 동일한 문제가 여러 번 발생했습니다. 종종 그들은 스키마에 대해 올바른 "Content-Type"헤더를 보내지 않으며 변경하기까지 오랜 시간이 걸릴 수 있습니다.