傳入請求的Accept
頭的ZF\ContentNegotiationAcceptFilterListener
類的內部檢查,如果沒有接受標頭存在the validateMediaType
method returns false
然後ApiProblemResponse
創建at line 55。
當然,最好的做法是確保在所有請求中都有一個接受標頭,但萬一這種情況不可行,您可以在所有請求中設置一個默認接受標頭。
/**
* {@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');
}
}
:
您只需在應用程序中添加此Module.php
方法解決呢