SortFilter generates unsupported array form for parameters
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 72/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- php
- Domaine
- api, backend-api-design
Piste de recherche
Commencez par lire SortFilter et OpenApiFilterTrait::getOpenApiParameters(), puis examinez les tests des paramètres de requête OpenAPI générés. Le rapport indique que castToArray est probablement à l’origine du paramètre supplémentaire au format tableau. Le travail est terminé lorsque la documentation ne présente plus orderDate[] si le filtre rejette cette entrée et que les tests concernés réussissent.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
API Platform version(s) affected:
I have tested this on both api-platform/core 4.4.4 and api-platform/core 5.0.3
Description
When you add a SortFilter to an endpoint it generates 2 forms of the sortFilter for the given property. For example:
Let's create the following Collection endpoint:
#[ApiResource(
shortName: 'Party',
operations: [
new GetCollection(
'/activities/parties{._format}',
parameters: [
'orderDate' => new QueryParameter(
filter: new SortFilter(),
property: 'date',
),
]
),
],
openapi: new Operation(
tags: ['Activities'],
summary: 'Parties',
)
)]
This would result in the docs.jsonopenapi generating these two parameters for it:
{
"name": "orderDate",
"in": "query",
"description": "Party orderDate",
"required": false,
"deprecated": false,
"schema": {
"type": "string",
"enum": [
"asc",
"desc",
"ASC",
"DESC"
]
},
"style": "form",
"explode": true
},
{
"name": "orderDate[]",
"in": "query",
"description": "Party orderDate",
"required": false,
"deprecated": false,
"schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"asc",
"desc",
"ASC",
"DESC"
]
}
},
The first works fine, but if you were to use ?orderDate[]= the endpoint will throw a constrain violation with code 422 saying the selected value is not valid. It seems Order filter creates the documentation for it but does not actually support this form of the filter (which makes sense to me as I cannot come up with a situation where you would want to be able to sort the same property in multiple directions).
How to reproduce
I think the previous header explains it adequately.
Possible Solution
One solution would be to overwrite the castToArray property of the parameter before passing it to OpenApiFilterTrait's getOpenApiParameters() method by altering the use statement in SortFilter to something like:
use OpenApiFilterTrait {
getOpenApiParameters as private traitGetOpenApiParameters;
}
and then setting castToArray to false if it was NULL by adding the following to SortFilter:
public function getOpenApiParameters(Parameter $parameter): OpenApiParameter|array|null
{
return $this->traitGetOpenApiParameters(
$parameter->withCastToArray(
$parameter->getCastToArray() ?? false,
)
);
}
- Langage dominant
- PHP
- Étoiles
- 2.6k
- Forks
- 988
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 105
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de api-platform/core
-
JSON:API: resource schemas (`*.jsonapi`) have `properties` but no `type: object`Peut-être pris @ousamabenyounes l’a pris il y a 5 jours. Ouverte
Difficulté 2/5 Moins d'une heure Accessibilité débutants 80/100
api-platform/core#8701 ·
Les mainteneurs répondent en général sous 1 jour
-
[Json-Schema] Nested resources lost externalDoc and description dataPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
api-platform/core#8721 ·
Les mainteneurs répondent en général sous 1 jour
-
JSON:API: 404/405 router errors are empty, and error objects have a non-spec `type` memberPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 50/100
api-platform/core#8704 ·
Les mainteneurs répondent en général sous 1 jour
-
JSON:API: request documents with no `data`, no `type` or a wrong `type` are accepted with 201Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 62/100
api-platform/core#8703 ·
Les mainteneurs répondent en général sous 1 jour
-
JSON:API: relations set through the constructor reject spec resource linkage (`relationships.<name>.data`)Peut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
api-platform/core#8702 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de api-platform/core
Issues similaires
-
sync-en
Difficulté 1/5 Moins d'une heure Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 2 jours
-
Source item status is not saved when stock is deducted on shipment (stays "In Stock" at qty 0)OuverteIssue: ready for confirmation
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
coollabsio/coolify#12274 ·
Les mainteneurs répondent en général sous 1 jour
-
[Type] Bug
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
Les mainteneurs répondent en général sous 4 jours
-
0.kind: enhancement 9.needs: package (update)
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
NixOS/nixpkgs#577156 · 3 réactions ·
Les mainteneurs répondent en général sous 1 jour