sacheen / rest-hook-bundle
一个 Symfony2 & 3 Bundle,可以将任何控制器轻松转换为 RESTful 端点
dev-master
2018-10-05 07:38 UTC
Requires
- php: >=5.4
- jms/serializer-bundle: ^2.4
- symfony/framework-bundle: >=2.1
This package is not auto-updated.
Last update: 2024-09-20 21:50:17 UTC
README
这个包允许您将任何控制器转换为 API 端点。
这个包的目的是允许重用控制器,并简化创建 API 端点。
简单示例
<?php
class DefaultController extends Controller
{
/**
* @Route("/hello/{name}")
* @Route("/api/hello/{name}",name="_hello_api",defaults={"_format"="json"},requirements={"_method"="GET"}))
* @Template()
*/
public function indexAction($name)
{
return array('name' => $name);
}
}
/hello/{name}
这个路由将渲染模板 Default::index.html.twig。
/api/hello/{name}
这个路由将默认输出 JSON,无需模板。
安装
composer require "sacheen/rest-hook-bundle dev-master"
<?php
#AppKernel::registerBundles()
$bundles = array(
// ...
new SD\RestHookBundle\SDRestHookBundle(),
new \JMS\SerializerBundle\JMSSerializerBundle()
// ...
);
配置
#app/config.yml
sd_rest_hook:
formats: [json,xml]
route_patterns: [/api/i,/ajax/i]
json_callback: json_callback
request_listener_priority: 100
route_patterns 允许一个正则表达式数组,如果路由匹配模式,则内核将拦截响应,并将其渲染为相关端点格式。
json_callback 选项允许指定用于 json_callback 的字符串。
request_listener_priority 设置拦截请求的优先级。
JMSSerializerBundle
配置允许 formats 通过 JMSSerializerBundle。您可以在其 文档 中了解更多关于该包的信息。
请求拦截器
此功能允许向服务器发送 JSON 数据,并将其转换为控制器可以理解的 HTTP 查询字符串。
异常
存在一个 RestfulException 类,这允许您设置一个数据 [数组] 变量,该变量将翻译为响应的内容。
最终
所有控制器必须返回一个数组(),以正确渲染。
示例
//sample routes for get/put/post/delete
* @Route("/api/user",name="_user_get_api",defaults={"_format"="json"},requirements={"_method"="GET"}))
* @Route("/api/user",name="_user_put_api",defaults={"_format"="json"},requirements={"_method"="PUT"}))
* @Route("/api/user",name="_user_post_api",defaults={"_format"="json"},requirements={"_method"="POST"}))
* @Route("/api/user",name="_user_delete_api",defaults={"_format"="json"},requirements={"_method"="DELETE"}))