J'ai utilisé la bibliothèque SpringFox pour la documentation de repos de mon application Spring Boot. Lorsque je clique sur le modèle, tous les éléments sont retournés en option. Existe-t-il un moyen d'afficher les éléments requis comme obligatoires? Y a-t-il une configuration supplémentaire qui doit être ajoutée?
Oui par défaut Tous les champs seront facultatifs. Pour marquer un champ comme requis, vous pouvez utiliser l'annotation suivante.
@ApiModelProperty(required = true)
Sur la méthode getter du champ qui devrait être obligatoire. Cela ne montrera pas le champ comme "obligatoire". Mais la balise facultative sera supprimée pour ce champ dans la documentation.
J'espère que cela t'aides.
Essayez un code similaire dans la configuration Swagger:
@Bean
public Docket api() {
List<ResponseMessage> list = new Java.util.ArrayList<>();
list.add(new ResponseMessageBuilder().code(500).message("500 message")
.responseModel(new ModelRef("JSONResult«string»")).build());
list.add(new ResponseMessageBuilder().code(401).message("Unauthorized")
.responseModel(new ModelRef("JSONResult«string»")).build());
return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any()).build().securitySchemes(Collections.singletonList(securitySchema()))
.securityContexts(Collections.singletonList(securityContext())).pathMapping("/")
.directModelSubstitute(LocalDate.class, String.class).genericModelSubstitutes(ResponseEntity.class)
.alternateTypeRules(newRule(
typeResolver.resolve(DeferredResult.class,
typeResolver.resolve(ResponseEntity.class, WildcardType.class)),
typeResolver.resolve(WildcardType.class)))
.useDefaultResponseMessages(false).apiInfo(apiInfo()).globalResponseMessage(RequestMethod.GET, list)
.globalResponseMessage(RequestMethod.POST, list);
}
Et dans le mappage du contrôleur, ajoutez @RequestBody @Valid MyRequestClass req
Par exemple si vous passez des objets dans le corps de la demande, et si vous passez des paramètres, ajoutez quelque chose comme @RequestParam(value = "email", required = true, defaultValue = "") String email
Aussi, voyez comment dans le code de configuration comment référencer une classe avec un type générique, c'est-à-dire "JSONResult«string»"
Qui fait référence à JSONResult<String>
La prise en charge des annotations de validation du bean a été ajoutée, en particulier pour @NotNull, @Min, @Max et @Size dans Springfox v2.3.2.
Vous pouvez placer ces annotations sur n'importe lequel de vos modèles d'API.
Pour l'utiliser, ajoutez la dépendance springfox-bean-validators:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-bean-validators</artifactId>
</dependency>
Ajoutez à la classe de configuration de votre application:
@Import({springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration.class})
Voir: https://springfox.github.io/springfox/docs/current/#springfox-support-for-jsr-3
J'étais avec le même problème mais avec les astuces @etech, j'ai pu voir les champs obligatoires marqués dans swagger. Tout ce que j'ai fait était de mettre à jour springfox-swagger.version vers 2.9.2 (à partir de 2.4.0) et guava.version à 20.0 (à partir de 15) plus l'importation dans la classe de configuration d'application. Je vous remercie.