首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >API平台:将嵌入式子资源更改为他们的@id

API平台:将嵌入式子资源更改为他们的@id
EN

Stack Overflow用户
提问于 2019-10-25 12:15:10
回答 1查看 643关注 0票数 0

我正在使用Symfony 4.3和API平台2.4。在我的API中,有资源‘组’和相关的子资源‘电话’:

代码语言:javascript
复制
{
    "@context": "/contexts/groups",
    "@id": "/groups/7116",
    "@type": "groups",
    "id": 7116,
    "name": "Standard Test",
    "description": "",
    "phones": {
        "7848412": {
            "@id": "/phones/7848412",
            "@type": "phones",
            "id": 7848412,
            "phone": "+412344545656",
            "a": "o2",
            "b": "",
            "c": "",
            "d": "",
            "e": ""
        }
}

资源YAML:

代码语言:javascript
复制
entities\ClientPhoneGroup:
  shortName: 'groups'
  description: "Phone's group"
  collectionOperations:
    post:
      denormalization_context:
        groups: ['write']
  itemOperations:
    get: ~
    put:
      denormalization_context:
        groups: ['write']
    delete: ~

  attributes:
    normalization_context:
      groups: ['read']
    security: "is_granted('IS_AUTHENTICATED_FULLY')"
    subresource_operations:
      phone_get_subresource:
        method: 'GET'

  properties:
    id:
      identifier: true
    phones:
      subresource:
        resourceClass: 'entities\ClientPhone'
        collection: false

代码语言:javascript
复制
entities\ClientPhone:
  shortName: 'phones'
  description: "Phones list by group"
  collectionOperations:
    post:
      path: /groups/{group_id}/phones
      requirements:
        group_id: '\d+'
      denormalization_context:
        groups: ['write']
  itemOperations:
    get: ~
    put:
      denormalization_context:
        groups: ['write']
    delete: ~
  attributes:
    normalization_context:
      groups: ['read']
    security: "is_granted('IS_AUTHENTICATED_FULLY') "

序列化程序YAML:

代码语言:javascript
复制
entities\ClientPhoneGroup:
  attributes:
    id:
      groups: ['read']
    name:
      groups: ['read', 'write']
    description:
      groups: ['read', 'write']
    phones:
      groups: ['read']

代码语言:javascript
复制
entities\ClientPhone:
  attributes:
    id:
      groups: ['read']
    phone:
      groups: ['read', 'write', 'edit']
    a:
      groups: ['read', 'write', 'edit']
    b:
      groups: ['read', 'write', 'edit']
    c:
      groups: ['read', 'write', 'edit']
    d:
      groups: ['read', 'write', 'edit']
    e:
      groups: ['read', 'write', 'edit']

如何将组资源中的嵌入式电话列表更改为“/group/7116/ phone”?如何将链接添加到“group”资源(例如/group/7116)到电话sub-resource?

EN

回答 1

Stack Overflow用户

发布于 2019-11-12 07:35:08

回答问题2。从normalization_context:groups: ['read']中删除entities\ClientPhone,以便当您调用GET组资源api时,电话子资源将具有IRI而不是所有字段。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58558354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档