Ich habe ein Spring Boot Projekt mit springfox-swagger2
2.7.0
Und ich habe den folgenden Controller:
Ich möchte steuern, was in den Dokumenten angezeigt wird, indem ich die Klasse Id
mit Anmerkungen versehe. Dies funktioniert nur für einige Teile der Anmerkung, aber nicht für alle.
Die Klasse Id
(die einen registrierten Konverter von String
bis Id
hat):
Nun sieht die zurückgegebene Swagger JSON
wie folgt aus:
Meine Frage (oder möglicherweise ein Fehlerbericht) lautet: Warum werden einige Teile der @ApiParam
-Anmerkung verwendet (wie value
, defaultValue
und required
), andere nicht, wie name
und %Code%?
Warum scheint es, dass ich die type
oder name
hier nicht ändern kann?
Für meinen speziellen Anwendungsfall ist letzterer der, den ich in type
ändern möchte.
Ich habe beschlossen, die folgende Komponente mit der Hilfe von skadya hinzuzufügen.
%Vor%Die Autoren von Springfox glauben, dass dies ein Fehler sein könnte: Ссылка
Standardmäßig werden die @ApiParam-Attribute 'name' und 'type' verwendet, um den Parameternamen und den erkannten Typ der in der API-Methode angegebenen direkten Parameter zu überschreiben. Wenn Sie @ApiParam für ein Feld verwenden, werden der Typ und der Name vom Namen des Felds abgeleitet, und der deklarierte Typ und der überschriebene Wert für Name und Typ werden nicht berücksichtigt. (Es sieht von Entwurf in Springfox aus, Sie können sich die Implementierung springfox.documentation.swagger.readers.parameter.SwaggerExpandedParameterBuilder
ansehen)
Wenn Sie dieses Verhalten noch ändern möchten, können Sie eine benutzerdefinierte Implementierung von springfox.documentation.spi.service.ExpandedParameterBuilderPlugin
interlace registrieren.
Für z.B.
%Vor%Ich hoffe, es hilft.
Idealerweise müssen Sie @ApiParam
mit den Methodenparametern verwenden, während @ApiModelProperty
mit den Modelleigenschaften übereinstimmt.
Nicht sicher, ob das Attribut type vorhanden ist, aber unten ist die Art, mit Typen umzugehen:
%Vor%Ich benutze Version 2.6.1 und finde das Attribut "type" in @ApiParam nicht, während ich sehen kann, dass Sie "type" damit verwenden. Stellen Sie also sicher, dass es verfügbar ist. Ich erwähnte auch, dass @ApiModelProperty dataType () bereitstellt, um das von Ihnen erwähnte Szenario zu behandeln.
Tags und Links java spring-boot swagger swagger-ui swagger-2.0