gpt4 book ai didi

php - 在 API 平台中关闭端点的多元化

转载 作者:行者123 更新时间:2023-12-02 18:55:19 25 4
gpt4 key购买 nike

在 Symfony 5 项目中,我们使用 API 平台生成 REST API。

其中一个实体类称为 FarmMetadata

<?php

namespace App\Entity;

use ApiPlatform\Core\Annotation\ApiResource;
use Doctrine\ORM\Mapping as ORM;

/**
* @ApiResource()
* @ORM\Table(... some settings ...)
* @ORM\Entity
*/
class FarmMetadata
{
// properties and methods
}

当我运行 php bin/console debug:router 时,它会显示该资源的以下路由:

api_farm_metadatas_get_collection    GET      ANY      ANY    /api/farm_metadatas.{_format}        
api_farm_metadatas_post_collection POST ANY ANY /api/farm_metadatas.{_format}
api_farm_metadatas_get_item GET ANY ANY /api/farm_metadatas/{id}.{_format}
api_farm_metadatas_delete_item DELETE ANY ANY /api/farm_metadatas/{id}.{_format}
api_farm_metadatas_put_item PUT ANY ANY /api/farm_metadatas/{id}.{_format}
api_farm_metadatas_patch_item PATCH ANY ANY /api/farm_metadatas/{id}.{_format}

但是“元数据”这个词已经是复数了。没有元数据这样的东西。如何关闭此端点的复数形式?

我尝试使用 shortName:

* @ApiResource(
* shortName="FarmMetadata" // also "farm_metadata"
* )

但它不会改变输出。

如果我使用:

* @ApiResource(
* shortName="Metadata"
* )

然后更改路由名称和路径:

api_metadata_get_collection         GET      ANY      ANY    /api/metadata.{_format}              
api_metadata_post_collection POST ANY ANY /api/metadata.{_format}
api_metadata_get_item GET ANY ANY /api/metadata/{id}.{_format}
api_metadata_delete_item DELETE ANY ANY /api/metadata/{id}.{_format}
api_metadata_put_item PUT ANY ANY /api/metadata/{id}.{_format}
api_metadata_patch_item PATCH ANY ANY /api/metadata/{id}.{_format}

但这不是我想要的。

我知道我可以为每个操作声明一个路径,但这会损害 DRY 原则。

我怎样才能实现预期的行为?

最佳答案

您可以在每个操作中使用“路径”选项。参见https://api-platform.com/docs/core/operations/#configuring-operations

例如

 *     shortName="Metadata",
* itemOperations={
* "get"={
* "path"="/metadata/{id}"

关于php - 在 API 平台中关闭端点的多元化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66238093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com