sacheen/rest-hook-bundle

一个 Symfony2 & 3 Bundle,可以将任何控制器轻松转换为 RESTful 端点

安装: 387

依赖: 0

建议者: 0

安全: 0

星标: 2

关注者: 2

分支: 2

开放问题: 0

类型:symfony-bundle

dev-master 2018-10-05 07:38 UTC

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"}))