В моем приложении Symfony на платформе API у меня есть класс Membership, который представляет отношения «многие ко многим» между пользователями и сообществами. Он содержит только два маршрута: DELETE для выхода пользователя из сообщества и POST для присоединения.
#[ORM\Entity(repositoryClass: MembershipRepository::class)]
#[ApiResource(
description: "A representation of a single user being a member of a given subreddit.",
operations: [
new Post(
uriTemplate: '/subreddits/{subreddit_id}/join.{_format}',
uriVariables: [
'subreddit_id' => new Link(
fromClass: Community::class,
fromProperty: 'members',
),
],
security: "is_authenticated()",
securityMessage: "Only logged-in users can join a subreddit.",
denormalizationContext: ['groups' => ['membership:create']],
// openapiContext: ['requestBody' => false],
// openapiContext: ['requestBody' => ['content' => ['application/ld+json' => ['schema' => ['type' => 'object']]]]],
input: Community::class,
provider: CommunityStateProvider::class,
processor: MembershipPersistStateProcessor::class,
),
new Delete(
uriTemplate: '/subreddits/{subreddit_id}/leave.{_format}',
uriVariables: [
'subreddit_id' => new Link(
fromClass: Community::class,
fromProperty: 'members'
),
],
security: "is_authenticated()",
securityMessage: "Only logged-in users can leave a subreddit.",
input: Community::class,
provider: CommunityStateProvider::class,
processor: MembershipRemoveStateProcessor::class,
),
],
)]
#[UniqueEntity(fields: ['subreddit', 'member'], message: "You are already a member of this subreddit.")]
class Membership
Поскольку данные пользователя извлекаются из токена доступа, а данные сообщества передаются через переменную URI, тело JSON не требуется.
И ...
...выглядит просто ужасно.
На основе запросов на включение, которые я нашел в репозитории платформы API (pull), разрешает пустые запросы для POST и PUT должно быть возможно, установив для типа контента значение '', но все конфигурации, которые я пробовал, приводили только к большему количеству ошибок. Есть ли способ добиться этого?
В моем приложении Symfony на платформе API у меня есть класс Membership, который представляет отношения «многие ко многим» между пользователями и сообществами. Он содержит только два маршрута: DELETE для выхода пользователя из сообщества и POST для присоединения. [code]Membership[/code] класс сущности: [code] #[ORM\Entity(repositoryClass: MembershipRepository::class)] #[ApiResource( description: "A representation of a single user being a member of a given subreddit.", operations: [ new Post( uriTemplate: '/subreddits/{subreddit_id}/join.{_format}', uriVariables: [ 'subreddit_id' => new Link( fromClass: Community::class, fromProperty: 'members', ), ], security: "is_authenticated()", securityMessage: "Only logged-in users can join a subreddit.", denormalizationContext: ['groups' => ['membership:create']], // openapiContext: ['requestBody' => false], // openapiContext: ['requestBody' => ['content' => ['application/ld+json' => ['schema' => ['type' => 'object']]]]], input: Community::class, provider: CommunityStateProvider::class, processor: MembershipPersistStateProcessor::class, ), new Delete( uriTemplate: '/subreddits/{subreddit_id}/leave.{_format}', uriVariables: [ 'subreddit_id' => new Link( fromClass: Community::class, fromProperty: 'members' ), ], security: "is_authenticated()", securityMessage: "Only logged-in users can leave a subreddit.", input: Community::class, provider: CommunityStateProvider::class, processor: MembershipRemoveStateProcessor::class, ), ], )] #[UniqueEntity(fields: ['subreddit', 'member'], message: "You are already a member of this subreddit.")] class Membership [/code] Поскольку данные пользователя извлекаются из токена доступа, а данные сообщества передаются через переменную URI, тело JSON не требуется. И ... [code]$response = $client->request('POST', 'api/subreddits/'.$community->getId().'/join', [ 'headers' => [ 'Content-Type' => 'application/ld+json', 'Authorization' => 'Bearer ' . $token, ], 'json' => [], ]); [/code] ...выглядит просто ужасно. На основе запросов на включение, которые я нашел в репозитории платформы API (pull), разрешает пустые запросы для POST и PUT должно быть возможно, установив для типа контента значение '', но все конфигурации, которые я пробовал, приводили только к большему количеству ошибок. Есть ли способ добиться этого?