Swagger documentation pour le Printemps Paginable interface
J'ai développé une microservice à l'aide de Printemps de Démarrage. La documentation de l'API REST est faite avec Swagger. Un peu de REPOS des ressources, l'utilisation de Printemps concepts de fournir la pagination pour gratuit. Ci-dessous est un exemple:
@RequestMapping(value = "/buckets", method = GET)
public PagedResources list(Pageable pageable, PagedResourcesAssembler assembler) {
return bucketService.listBuckets(pageable, assembler);
}
Si j'ouvre le Style de la page, le formulaire ci-dessous est disponible pour la ressource:
Le problème que j'ai est que le paginable paramètre est détecté avec un contenu de type application/json et je ne sais pas comment passer d'une valeur à modifier la taille de la page par exemple. Toutes les valeurs semblent être ignorés.
Est-il possible de passer des paramètres de requête comme objet JSON? ou est-il possible de configurer Swagger pour générer la requête indépendante des champs de paramètre pour les getters contenue par la Paginable interface?
Veuillez noter que je suis en utilisant Springfox avec Gradle:
compile 'io.springfox:springfox-spring-web:2.3.1'
compile 'io.springfox:springfox-swagger2:2.3.1'
compile 'io.springfox:springfox-swagger-ui:2.3.1'
- Êtes-vous à l'aide de printemps-fox pour générer le Swagger spec dans le RESTE du contrôleur?
- Oui, je suis en utilisant Springfox dans la version 2.3.1.
Vous devez vous connecter pour publier un commentaire.
C'est un problème connu avec le Printemps-Fox. Voir L'Émission De #755. Basé sur zdila commentaire Deux à cette époque alternative est d'ajouter @ApiImplicitParams qui n'est pas idéal, mais ça fonctionne.
[
Un https://github.com/springfox/springfox/issues/755
Deux https://github.com/springfox/springfox/issues/755#issuecomment-135059871
dataType = "int"
sinon, le type de données sort pas défini comme indiqué dans l'image.Bâtiment sur Vineet Bhatia réponse, vous pouvez placer la solution dans un annotations personnalisées pour la réutilisabilité:
Qui peut ensuite être utilisé comme:
'ApiImplicitParams' not applicable to annotation type
@ApiIgnore
annotation à l'Pageable
paramètre.Vineet Bhatia, en réponse à
@ApiImplicitParams
a l'air bien. Mais j'ai fait face à la situation, quand@ApiIgnor
et@ApiParam(hidden = true)
ne pas travailler et vous pouvez toujours observer les asembler et paginable params. J'ai résolu ce problème par l'ajout de la ligne suivanteà la fiche de haricots dans mon
SwaggerConfig
.Réponse de Vineet Bhatia auront problème de validation lorsque vous sont pas en cours d'exécution sur l'hôte local. Il plaidera en faveur de paramètres entiers qu'ils ne sont pas correspondant à json schema.
J'ai donc changé entier en chaîne de caractères:
Pour les personnes qui veulent résoudre ce problème en 2019. Cette configuration via springfox documentation fonctionne très bien, sauf que vous ne pouvez pas définir la description des paramètres.
Code est ici.
https://github.com/springfox/springfox/blob/ef1721afc4c910675d9032bee59aea8e75e06d27/springfox-data-rest/src/main/java/springfox/documentation/spring/data/rest/configuration/SpringDataRestConfiguration.java
Répondre à la validation problème indiqué par Evgeny.
À l'aide de
déclenche une exception:
(au moins, il le fait avec springfox-swagger2 et springfox-swagger2-l'interface utilisateur de la version 2.9.2)
Vous pouvez éviter de l'exception en suivant Evgeny de réponse ou en ajoutant des valeurs par défaut et des exemples de valeurs pour les paramètres entiers:
Bien que la solution avec les paramètres implicites des travaux, il introduit beaucoup d'extra, cassant le code. En fin de compte, nous sommes allés avec la solution suivante:
Nous passer un
PageRequest
(qui implémentePageable
) à notre service, qui renvoie unPage
. (tous deorg.springframework.data.domain
).La
org.springframework.data.web.PagedResourcesAssembler
obtient injecté automatiquement via la méthode de contrôleur et permet de cartographier les Éléments deorg.springframework.hateoas.PagedResources
Nous n'avons pas besoin dynamique de tri nous avons donc omis; cela pose quelques problèmes pour ajouter un tri depuis springfox ne pas jouer gentil avec org.springframework.les données.domaine.De tri.