我有一条Slim 3路线:$app->get('/calendar/{date}', 'CalendarCtrl:getSchedule');
此路由可以通过简单的HTML列表,json或xml格式返回相同的计划
现在我正在寻找一个基于Accept
(或更多标头)HTTP标头的简单REST解决方案。
例如:
要求:
GET /calendar/2017-01-01
Accept: application/json
响应:
Content-Type: application/json
Body: {json schedule}
所以路线应该是这样的:$app->get('/calendar/{date}', {Accept: application/json}, 'CalendarCtrl:getScheduleJson');
我知道我可以在路由处理程序中检查该标头。但我正在寻找一个简单的声明性解决方案。
答案 0 :(得分:1)
在从API发送响应之前添加中间件以检查该标头
$app->add(function ($req, $res, $next) {
//Checking for $req content-type here then send the response with the same one
//example
$headerValue= $req->getHeader('Accept');
if($headerValue=='application/json')
{
$response = $next($req, $res);
return $response
->withHeader('Content-type', 'application/json');
}
else{
//check for other header here
}
});