kmfk / hateoas-bundle

Symfony2 Bundle,用于向JMS Serializer添加符合Hateoas规范的URL

0.1.1 2014-01-30 06:11 UTC

This package is not auto-updated.

Last update: 2024-09-14 14:29:41 UTC


README

虽然这是一个简单的、可插入的Symfony Bundle,但你在这里可以找到一个功能更全的库和Bundle

###概述

Hateoas Bundle与JMS Serializer一起工作,允许你轻松地向REST API的JSON输出中添加符合Hateoas规范的资源URL。

虽然还有其他类似的Bundle,但它们对我来说似乎太重了。这个Bundle旨在无缝地与JMS Serializer一起工作,无需抽象或混淆你的数据序列化。

目前,这个Bundle只为序列化响应中的资源链接提供注解。

###Hateoas Bundle安装

最佳安装方法是通过使用composer。

#####将Bundle添加到Composer

"require": {
    "kmfk/hateoas-bundle": "~0.1",
}

#####更新AppKernel.php

将Hateoas Bundle添加到你的kernel引导序列中

public function registerBundles()
{
	$bundles = array(
    	// ...
    	new Kmfk\Bundle\HateoasBundle\HateoasBundle(),
    );

    return $bundles;
}

####配置Bundle

该Bundle允许你配置REST API主机和可选的路径前缀。你的链接将使用这些值构建。如果它们未设置,则Bundle将默认从当前请求中解析。

#app/config.yml

hateoas:
	host:   http://api.example.com/
	prefix: /api/

###注解

配置完毕后,你可以使用此Bundle提供的注解轻松地将资源链接添加到你的类和属性中。

#src/AcmeBundle/Entity/UserEntity.php

use Kmfk/Bundle/HateoasBundle/Annotation/Hateoas;

/**
 * @Hateoas(
 *      name    ="self",
 *      href    ="/user/{id}/"
 *      params  ={"id" = "getId"},
 *      groups  ={"list"},
 *      type    ="absolute"
 *  )
 */
class UserEntity
{
    protected $id;

    public function getId()
    {
        return $this->id;
    }
}

####输出

{
    "_links": {
        "self": {
            "href": "http://api.example.com/api/user/1/"
        }
    }
}

###注解参考

####使用参数你可以在href中拥有多个令牌。params数组应是一个关联数组,其键与路径中的令牌匹配。列出的方法应该是存在于注解类中的方法。

####组指定groups允许你根据排除组控制链接的输出

####嵌入式链接与绝对链接虽然absolute(默认值)将包括API主机和可选前缀,但embedded URL位于其他资源之下。将类型设置为'embedded'将允许你有这样的链接

{
    "_links": {
        "self": {
            "href": "http://api.example.com/api/user/1/email/1/"
        }
    }
}