gpt4 book ai didi

symfony - 如何将 api-platform {id} 更改为其他名称?

转载 作者:行者123 更新时间:2023-12-05 05:13:32 25 4
gpt4 key购买 nike

我在 Symfony 4 中使用 api-platform。它工作正常,但我想从以下位置更改 GET url:/booking/{id}/booking/{bookingId}

我正在使用我自己的 DTO 对象和自定义数据提供程序(不是 Doctrine ORM)。

以下是当前工作正常的 @ApiResource@ApiProperty 定义:

/**
*
* @ApiResource(
* itemOperations={
* "get"={
* "path"="/booking/{id}",
* },
* "api_bookings_get_item"={
* "swagger_context"={
* "operationId"="getBookingItem",
* "summary"="Retrieves details on a booking",
* "parameters"= {
* {
* "name"="id",
* "description"="Booking ID",
* "default"="15000",
* "in"="path",
* "required"=true,
* "type"="string"
* }
* },
* "responses"={
* "200"={
* "description"="Results retrieved"
* },
* "404"={
* "description"="Booking not found"
* }
* }
* }
* }
* },
* collectionOperations={}
* )
*/
final class Booking
{
/**
* @var string
* @Assert\NotBlank
*
* @ApiProperty(
* identifier=true,
* attributes={
* "swagger_context"={
* "description"="Booking ID",
* "required"=true,
* "type"="string",
* "example"="123456"
* }
* }
* }
*/
public $id;

// other variables

}

但是,如果我将所有引用从 'id' 更改为 'bookingId',它将停止工作并且我收到 404 错误。以下是我对上述代码所做的更改:

"path"="/booking/{bookingId}"

"name"="bookingId"

public $bookingId;

api-platform 是否被硬编码为使用 'id' 作为标识符?有什么办法可以改变吗?

最佳答案

在 Api 平台中,id 参数是硬编码的:

namespace ApiPlatform\Core\DataProvider;
private function extractIdentifiers(array $parameters, array $attributes)
{
if (isset($attributes['item_operation_name'])) {
if (!isset($parameters['id'])) {
throw new InvalidIdentifierException('Parameter "id" not found');
}

但您可以创建自己的操作并使用您想要的参数名称,文档中有一个很好的示例 custom operations

关于symfony - 如何将 api-platform {id} 更改为其他名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53574978/

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