Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 符号与角度应用_Angularjs_Symfony_Fosrestbundle_Hateoas - Fatal编程技术网

Angularjs 符号与角度应用

Angularjs 符号与角度应用,angularjs,symfony,fosrestbundle,hateoas,Angularjs,Symfony,Fosrestbundle,Hateoas,我有SF2应用程序和AngularJS客户端 当我创建一些项目时,symfony返回http201状态,这意味着项目已创建 而且。。。我想知道这个项目的ID,或者更好的路线到这个项目。因此,当我创建一些东西时,我希望返回http201 status和Location:http://my-app.dev/created-item/{id}和访问控制公开头:位置头 当然,我可以创建新的响应并添加此标题。但我必须在控制器中的任何createAction中执行此操作 是否有某种方法可以在成功发布请求后将

我有SF2应用程序和AngularJS客户端

当我创建一些项目时,symfony返回
http201状态
,这意味着项目已创建

而且。。。我想知道这个项目的ID,或者更好的路线到这个项目。因此,当我创建一些东西时,我希望返回
http201 status
Location:http://my-app.dev/created-item/{id}
访问控制公开头:位置

当然,我可以创建新的响应并添加此标题。但我必须在控制器中的任何
createAction
中执行此操作

是否有某种方法可以在成功发布请求后将此标题自动添加到任何201响应中


或者我的想法是错误的,应该采取其他措施?

这可以通过支持REST API来实现

什么是HATEOAS? 基本上,
HATEOAS
所做的是自动向API返回的每个资源添加URI

调用
HATEOAS时基于
HATEOAS的响应示例http://localhost:8080/api/customers
将是:

[{
    "name": "Alice",
    "links": [ {
        "rel": "self",
        "href": "http://localhost:8080/api/customers/1"
    } ]
}]
use JMS\Serializer\Annotation as Serializer;
use Hateoas\Configuration\Annotation as Hateoas;

/**
 * @Serializer\XmlRoot("customer")
 *
 * @Hateoas\Relation("self", href = "expr('/api/customers/' ~ object.getId())")
 */
class Customer
{
    private $id;
    private $name;

    ...
}
这将返回所有客户以及每个客户到该客户资源的自链接URI

如何在SF2中使用HATEOAS? 您可以使用和
JMSSerializerBundle
的组合将其集成到Symfony2中

您的关系(到资源的链接)可以在
XML
YAML
PHP
注释中配置。带有注释的示例如下:

[{
    "name": "Alice",
    "links": [ {
        "rel": "self",
        "href": "http://localhost:8080/api/customers/1"
    } ]
}]
use JMS\Serializer\Annotation as Serializer;
use Hateoas\Configuration\Annotation as Hateoas;

/**
 * @Serializer\XmlRoot("customer")
 *
 * @Hateoas\Relation("self", href = "expr('/api/customers/' ~ object.getId())")
 */
class Customer
{
    private $id;
    private $name;

    ...
}
有关更多详细信息,请参阅

我自己从来没有使用过这个,但是根据,
bazinghateoasbundle
构建在
JMSSerializerBundle
的基础上,为序列化对象自动生成链接和嵌入对象,因此您不需要做任何其他事情


结论:
POST
请求中创建新项目时,返回创建的项目
bazingaateoasbundle
将自动将该项的URI/路由添加到响应中。

对SF2使用
REST
bundle,如。我使用它。但是它没有添加这个标题。您可能想让RESTAPI支持
HATEOAS
,看看这个。另请参见。重定向有自己的返回代码集。因此,不能在同一个响应中同时返回201和301。你可能无论如何都不想去。