alterway/rest-hal-bundle

使用 Symfony2 管理HAL Rest API http://stateless.co/hal_specification.html

安装: 551

依赖者: 0

建议者: 0

安全: 0

星标: 14

关注者: 12

分支: 9

开放问题: 2

类型:symfony-bundle

v0.0.2 2013-12-27 15:07 UTC

This package is not auto-updated.

Last update: 2024-09-24 06:11:01 UTC


README

# RestHalBundle

用于管理 Hal API 的 Symfony2 扩展包。

## 安装

编辑你的 composer.json

"require": {
    "alterway/rest-hal-bundle" : "master"
}

然后运行 Composer

php composer.phar update alterway/rest-hal-bundle

autoload.php 文件的末尾添加以下行

Doctrine\Common\Annotations\AnnotationRegistry::registerLoader(array($loader, 'loadClass'));

AppKernel.php 中启用你的扩展包

// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new Alterway\Bundle\RestHalBundle\AwRestHalBundle(),
    );
}

使用方法

资源

资源是一个 PHP 类,代表应用程序中元素的信息。

例如

// src/Alterway/DemoBundle/ApiResource/UserResource.php

namespace Alterway\DemoBundle\ApiResource;

use Alterway\Bundle\RestHalBundle\ApiResource\Resource;

class UserResource extends Resource
{
    public function __construct(RouterInterface $router, User $user)
    {
        parent::__construct($router);
        $this->user = $user;
    }

    protected function prepare()
    {
        $this->addLink('next', '/users?page=2');
        $this->addLink('search', '/users?id={user_id}');
    }

    protected function generateUri()
    {
        return $this->router->generate('demo.user', array('id' => 1));
    }
}

控制器

使用注解

记得启用注解

sensio_framework_extra:
router:  { annotations: true }
request: { converters: true }
view:    { annotations: true }
cache:   { annotations: true }
// some controller or yours

use Alterway\DemoBundle\ApiResource\UserResource;

/**
 * @Hal(code="200")
 */
public function userWithAnnotateAction(Request $request)
{
    $user = new User;
    return new UserResource($this->get('router'), $user);
}

不使用注解

// some controller or yours

use Alterway\Bundle\HalRestBundle\Response\HalResponse;
use Alterway\DemoBundle\ApiResource\UserResource;

public function userWithoutAnnotateAction(Request $request)
{
    $user = new User;
    $resource = new UserResource($this->get('router'), $user);
    return new HalResponse($resource, 200);
}

## 贡献

安装开发依赖

php composer.phar update

运行 Behat

./vendor/bin/behat @AwRestHalBundle

版权

版权 (c) 2013 La Ruche Qui Dit Oui!。有关详细信息,请参阅 LICENSE。

贡献者

  • Jean-François Lépine (Halleck45)
  • Benoît Merlet (trompette)
  • Antoine Lévêque (gh0stonio)

赞助商