Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Silex restful框架中的格式后缀_Php_Rest_Silex - Fatal编程技术网

Php Silex restful框架中的格式后缀

Php Silex restful框架中的格式后缀,php,rest,silex,Php,Rest,Silex,我开始构建一个支持多种响应格式的RESTful api。我想用Accept头和附加到请求url的文件后缀来识别请求的响应格式 例如。 /api/endpointwith includesAccept:application/json*和 /api/endpoint.json应产生相同的json响应 /api/endpoint.xml应导致xml响应 我在Silex中没有找到任何关于响应格式的文档,因此如何开始,是否可以允许文件后缀用于格式识别 谢谢, Patrick示例来自: 要在默认情况下获得

我开始构建一个支持多种响应格式的RESTful api。我想用Accept头和附加到请求url的文件后缀来识别请求的响应格式

例如。
/api/endpoint
with includes
Accept:application/json*
/api/endpoint.json
应产生相同的json响应

/api/endpoint.xml
应导致xml响应

我在Silex中没有找到任何关于响应格式的文档,因此如何开始,是否可以允许文件后缀用于格式识别

谢谢, Patrick

示例来自:

要在默认情况下获得json响应,您可以使用类似以下内容:

$app->get("/pages/{id}{_separator}{_format}", function (Request $request, $id) use ($app) {
    //...
})->assert("id", "\d+")
  ->value("_separator", ".")
  ->assert("_separator", "\.|\/")
  ->value("_format", "json")
  ->assert("_format", "json|xml");

// /pages/1 => json reponse
// /pages/1.json => json response
// /pages/1.xml => xml response
// /pages/1/json => json response (as a bonus)
// and etc.

另请参阅全局配置此行为。

恐怕您必须在控制器中执行此逻辑。。。
$app->get("/pages/{id}{_separator}{_format}", function (Request $request, $id) use ($app) {
    //...
})->assert("id", "\d+")
  ->value("_separator", ".")
  ->assert("_separator", "\.|\/")
  ->value("_format", "json")
  ->assert("_format", "json|xml");

// /pages/1 => json reponse
// /pages/1.json => json response
// /pages/1.xml => xml response
// /pages/1/json => json response (as a bonus)
// and etc.