0

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

{
    "@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:

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

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:

entities\ClientPhoneGroup:
  attributes:
    id:
      groups: ['read']
    name:
      groups: ['read', 'write']
    description:
      groups: ['read', 'write']
    phones:
      groups: ['read']

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']
  1. 如何在群组资源中将嵌入式电话列表更改为“/groups/7116/phones”?
  2. 如何将“组”资源(例如/groups/7116)的链接添加到电话子资源?
4

1 回答 1

2

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

于 2019-11-12T07:35:08.490 回答