innmind/rest-bundle

此包已被废弃,不再维护。作者建议使用innmind/rest-server-bundle包代替。

此Bundle封装了innmind rest服务器库

安装次数: 22,308

依赖: 0

推荐者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:symfony-bundle

2.0.2 2016-01-08 20:03 UTC

README

Scrutinizer Code Quality Code Coverage Build Status

SensioLabsInsight

innmind/rest-server库提供包装,允许您轻松地暴露REST L3 API。

此Bundle提供了在symfony项目中完全集成库的功能。它还添加了一个名为服务器功能的新特性;简单地说,它暴露一个路由OPTIONS *,该路由将输出通过此Bundle暴露的路由列表。目标是允许客户端发现,您可以想象一个REST客户端,它可以在尝试发送资源之前预先获取所有资源定义,以便提前知道它尝试发送的资源是否与定义匹配。

安装

composer require innmind/rest-bundle

通过在项目的app/AppKernel.php中添加以下行来启用Bundle

// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new Innmind\RestBundle\InnmindRestBundle,
        );
        // ...
    }
    // ...
}

然后,在配置中指定您的资源

innmind_rest:
    server:
        collections: [] #same configuration as the rest server library
        prefix: /api/prefix #optional

服务器

存储

要定义一个存储,您可以为服务创建一个具有innmind_rest.server.storage.abstract.doctrineinnmind_rest.server.storage.abstract.neo4j作为父类的服务。然后您需要指定用于构建服务的第一个参数,即实体管理器实例(一个doctrine或neo4j实例);并使用标签innmind_rest.server.storage标记服务,Bundle将查找此标签的alias属性以供以后使用(用于指定资源上的存储的名称)。

格式

由于允许的格式通过编码器处理,您可以通过在要添加的编码器服务上添加标签来声明新的格式。

内置的json格式的示例

innmind_rest.server.serializer.encoder.json:
    class: Innmind\Rest\Server\Serializer\Encoder\JsonEncoder
    tags:
        - { name: serializer.encoder }
        - { name: innmind_rest.server.format, format: json, mime: application/json, priority: 10 }

事件

在大多数情况下,您可能只想修改KernelEvents::RESPONSEEvents::{STORAGE}_READ_QUERY_BUILDERSTORAGE可以是DOCTRINENEO4J)以添加查询限制,例如连接的用户。

您可以通过查看Events.php来查看您可用的所有事件。

客户端

要使用API,您需要使用innmind_rest.client服务。使用示例

use Innmind\Rest\Client\HttpResource;

$client = $container->get('innmind_rest.client');

$resources = $client->getServer('http://example.com')->read('some_resource');
$resource = $client->getServer('http://example.com')->read('some_resource', 42);

$toCreate = new HttpResource;
$toCreate->set('someProperty', 'value');
$client->getServer('http://example.com')->create('some_resource', $toCreate);

$toUpdate = new HttpResource;
$toUpdate
    ->set('all', 'properties')
    ->set('must', 'be set');
$client->getServer('http://example.com')->update('some_resource', 42, $toUpdate);

$client->getServer('http://example.com')->remove('some_resource', 42);

您可以使用$server->getResources()查看服务器API公开的所有资源;它将返回一个关联数组,其中键为名称,值为定义。