swagger @ApiParam ignoriert bestimmte Eigenschaften

9

Ich habe ein Spring Boot Projekt mit springfox-swagger2 2.7.0 Und ich habe den folgenden Controller:

%Vor%

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):

%Vor%

Nun sieht die zurückgegebene Swagger JSON wie folgt aus:

%Vor%

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.

Aktualisieren

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: Ссылка

    
Michiel Haisma 15.11.2017, 21:29
quelle

3 Antworten

4

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.

    
skadya 21.11.2017, 22:59
quelle
-1

Idealerweise müssen Sie @ApiParam mit den Methodenparametern verwenden, während @ApiModelProperty mit den Modelleigenschaften übereinstimmt.

%Vor%

Nicht sicher, ob das Attribut type vorhanden ist, aber unten ist die Art, mit Typen umzugehen:

%Vor%     
Har Krishan 20.11.2017 12:59
quelle
-1

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.

    
Har Krishan 21.11.2017 08:22
quelle