Accept
ヘッダはZF\ContentNegotiationAcceptFilterListener
クラス内でチェックされず、ヘッダはthe validateMediaType
method returns false
存在し、次いでApiProblemResponse
がat line 55作成され受け入れる場合。
もちろん、すべてのリクエスト内に受け入れヘッダがあることを確認するのが最善ですが、何とかできない場合は、すべてのリクエスト内にデフォルトの受け入れヘッダを設定することができます。
あなたは単にあなたのアプリケーションModule.php
方法でこれを追加することによって、それを解決することができます。
/**
* {@inheritDoc}
*/
public function onBootstrap(MvcEvent $event)
{
$application = $event>getApplication();
$eventManager = $application->getEventManager();
// Attach setDefaultAcceptHeader method with higher priority then AcceptFilterListener
$eventManager->attach(MvcEvent::EVENT_ROUTE, [$this, 'setDefaultAcceptHeader'], 100);
}
/**
* @var MvcEvent $event
*/
public function setDefaultAcceptHeader(MvcEvent $event)
{
$request = $event->getRequest();
if(! $request instanceof \Zend\Http\Request){
// Not a http request, return
return;
}
// Check if we have an accept header, if not set to 'application/json'
$headers = $request->getHeaders();
if(!$headers->has('accept')){
$headers->addHeaderLine('accept', 'application/json');
}
}