从链接类型 API 响应中检索数据而无需手动编写多个请求的确切方法是什么?

问题描述 投票:0回答:1

我有一个正在开发的项目,我在前端使用 React,后端是在 Symfony + api 平台中构建的。 我的问题如下:

API 调用返回的响应格式我不太熟悉。

示例:为与 Country 实体相关的 Town 实体调用

/api/towns/1
会给出

{ name : "New York",
   code : "NY",
   country : /api/countries/1
 }

因此,如果我需要国家/地区的名称或代码,我将不得不再次致电

/api/countries

根据我的研究,我可以使用所谓的 vulcain 并添加标题

{ Preload : "/countries" }
,但这不起作用。 我用 axios 和 postman 尝试过,但没有成功。

我还研究了在 Symfony 中的实体定义中添加

#[ApiProperty(push: true)]
,它看起来像这样:

class Country
 {
    #[ORM\Id]
    #[ORM\GeneratedValue]
    #[ORM\Column]
    #[ApiProperty(push: true)]`

但也没有成功

我真的不知道如何解决这个问题,任何帮助将不胜感激

reactjs symfony api-platform.com
1个回答
0
投票

如果您始终需要您的国家/地区名称或代码,您应该避免每次都拨打电话,而是将其添加到您的标准化组#[Groups]

<?php
namespace App\Entity;

use ApiPlatform\Metadata\ApiResource;
use Symfony\Component\Serializer\Annotation\Groups;

#[ApiResource(normalizationContext: ['groups' => ['town']])]
class Town
{
    // ... 

    #[Groups('town')]
    public Country $country;

    // ...
}

这样你的答案就会直接像这样

{ 
   name : "New York",
   code : "NY",
   country : {
      name: 'United States of America',
      code: 'USA'
   }
 }

© www.soinside.com 2019 - 2024. All rights reserved.