Multiple ValidationContext : Wrong Swagger documentation
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 35/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- openapi, php
- 領域
- api, documentation
調査の方向性
api/src/Entity/Book.php の再現から始め、リンクされたバリデーションドキュメントをコンテキストとして使用しながら、POST と PUT で生成される Swagger ドキュメントを比較します。2 つのバリデーションコンテキストに対するドキュメント生成パスを追跡します。各操作がそれぞれの Length 制約を表示し、バリデーションの動作が正しいままであれば完了です。
索引モデルが issue の本文から書いたものです。
説明
API Platform version(s) affected: 3.2.13
Description
When multiple validationContext are used on the same property, the Swagger documentation is incorrectly generated; it utilizes the same Assert regardless of the validationContext .
The validation works correctly during the API call, it's just the Swagger documentation generation that is incorrect.
How to reproduce
Using Validation documentation :
<?php
// api/src/Entity/Book.php
use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\Delete;
use ApiPlatform\Metadata\Get;
use ApiPlatform\Metadata\Put;
use ApiPlatform\Metadata\GetCollection;
use ApiPlatform\Metadata\Post;
use ApiPlatform\Metadata\ApiResource;
use Symfony\Component\Validator\Constraints as Assert;
#[ApiResource]
#[Delete]
#[Get]
#[Put(validationContext: ['groups' => ['Default', 'putValidation']])]
#[GetCollection]
#[Post(validationContext: ['groups' => ['Default', 'postValidation']])]
class Book
{
#[Assert\Uuid]
private $id;
#[Assert\NotBlank(groups: ['postValidation'])]
public $name;
#[Assert\NotNull]
#[Assert\Length(min: 2, max: 50, groups: ['postValidation'])]
#[Assert\Length(min: 2, max: 70, groups: ['putValidation'])]
public $author;
// ...
}
Here is the generated documentation for the 'author' property for both the POST and PUT methods:
- 主要言語
- PHP
- スター
- 2.6k
- フォーク
- 989
- 平均マージ
- 1日 23時間
- マージ済み PR(30日)
- 102
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
api-platform/core のほかの issue
-
JSON:API: resource schemas (`*.jsonapi`) have `properties` but no `type: object`対応中かも @ousamabenyounes が 2 日前に担当しました。 オープン
難易度 2/5 1時間未満 初心者へのやさしさ 80/100
api-platform/core#8701 ·
メンテナーはふだん 1 日以内に返信
-
JSON:API: `JsonApiCollectionBaseSchemaNoPagination` declares `data` as `type: array` without `items`オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
api-platform/core#8699 ·
メンテナーはふだん 1 日以内に返信
-
api:openapi:export --spec-version=3.0.0 outputs `webhooks`, which is invalid in OpenAPI 3.0対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
api-platform/core#8690 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
api-platform/core#8680 ·
メンテナーはふだん 1 日以内に返信
-
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
api-platform/core#8725 ·
メンテナーはふだん 1 日以内に返信
api-platform/core の issue をすべて見る
似ている issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
nextcloud/integration_openai#446 ·
-
bug customer-reported
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
MagnaCapax/PMSS#1101 ·
メンテナーはふだん 5 日以内に返信
-
InvoiceSettled is answered 200 when the invoice cannot be re-fetched, so BTCPay never redelivers itオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
btcpayserver/woocommerce-greenfield-plugin#93 ·
メンテナーはふだん 1 日以内に返信
-
kind/bug status/triage
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
bug medium priority unconfirmed
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
filamentphp/filament#20760 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信