我在我的SF2项目中使用了Bazinga Hateoas和Fosrest。
在API调用之一中,我想显示朋友的链接,其中包含当前用户或用户ID,如下所示:
{
"_links": {
"self": { "href": "/users/1" },
"friends": [
{ "href": "/users/2" },
{ "href": "/users/3" },
]
},
}
我在Entity.User.yml文件中使用以下代码:
relations:
-
rel: self
href:
route: api_1_get_users
parameters:
id: expr(object.getId())
absolute: true
-
rel: expr(object.findFriends(object.getId()))
href:
route: api_1_get_users
parameters:
id: expr(object.getId())
absolute: true
我已经把#34; findFriends"存储库中的方法,但在yml文件中无法访问。我想这不是正确的做事方式。
我已经完成https://github.com/willdurand/Hateoas但无法弄清楚如何做到这一点。请指导我如何实现这一目标......
非常感谢任何帮助!
请指导我如何实现这个目标
答案 0 :(得分:2)
这是您使用 @RelationProvider 的方式。
/**
* Note:
* ====
* RelationProvider takes the method name which returns the relations.
*
* @Hateoas\RelationProvider("addRelations")
*/
class LinkContainingResource
{
public function addRelations($object, ClassMetadataInterface $classMetadata)
{
/**
* Important Note:
* ===============
* Relation is actually an Hateoas\Configuration\Relation object,
* NOT \Hateoas\Configuration\Annotation\Relation
*/
return [new Relation('relation_name', 'link1'),
new Relation('relation_name', 'link2'),
new Relation('relation_name', 'link3')];
}
}
Json / Hal结果:
{
"_links": {
"relation_name": [
{"href": "link1"},
{"href": "link2"},
{"href": "link3"}
]
}
}