現在、ライブラリは「json/application」を追加でサポートしていますが、他のコンテンツ タイプでエラーをスローします。
これを回避するには、デフォルトの「JsonSchema\Uri\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);
$data: API からの json デコードされた応答
$schema: スキーマの URL
他のパーティの API をスキーマに対してテストするときに、同じ問題が何度も発生しました。多くの場合、スキーマの正しい「Content-Type」ヘッダーを送信せず、変更に時間がかかることがあります。
更新: 検証からエンドポイントを除外する機能
UriRetriever:addInvalidContentTypeEndpoint()を使用できます。
$retriever = new UriRetriever();
$retriever->addInvalidContentTypeEndpoint('http://example.com/car/list');