2017-12-30 5 views
7

Ich habe versucht, weitere Informationen zu meiner Swagger-Dokumentation hinzuzufügen, aber ich habe einige Probleme mit der @ApiPropertyModel Annotation in bestimmten.Kongchen Swagger ignoriert die @ ApiModelProperty Annotation

Es spielt keine Rolle, was ich versuche, es funktioniert einfach nicht. Das Plugin generiert die Swagger.json korrekt, alle @ApiOperation Annotationen funktionieren für die REST-Ressourcen, aber für den Modellteil werden nur die Eigenschaften der Modellklassen untersucht und nicht die Annotationen über ihnen betrachtet.

Hier ist, wie das Plugin konfiguriert ist:

<plugin> 
    <groupId>com.github.kongchen</groupId> 
    <artifactId>swagger-maven-plugin</artifactId> 
    <version>3.1.5</version> 

    <configuration> 
     <apiSources> 
      <apiSource> 
       <locations> 
        <location>com.example.rest.resources</location> 
        <location>com.example.rest.model</location> 
       </locations> 
       <swaggerDirectory>${project.build.directory}/generated-sources</swaggerDirectory> 
       <basePath>/path/to/the/api</basePath> 
       <info> 
        <title>My RESTful API Documentation</title> 
        <version>${project.version}</version> 
       </info> 
      </apiSource> 
     </apiSources> 
    </configuration> 

    <executions> 
     <execution> 
      <phase>generate-sources</phase> 
      <goals> 
       <goal>generate</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

Wenn ich zum Beispiel habe:

@ApiModelProperty(example = "test example") 
public String test; 

Es wird die test Eigenschaft erzeugen, aber es wird kein Beispiel oder eine andere Eigenschaft erstellen das habe ich in dieser Annotation eingerichtet. Das gleiche passiert, wenn man es in einem Getter verwendet, also denke ich, das ist nicht das Problem.

Mache ich etwas falsch? Ich habe auch Kongchens Beispielprojekt angeschaut und ich konnte nichts Besonderes sehen, damit es funktioniert.

+0

Es wäre hilfreich zu wissen, ob die im POM konfigurierten Pakete und Pfade korrekt sind. Wenn Sie die Paketanweisung des Modells calss einfügen, würde das helfen. Könnten Sie auch eine ganze Java-Modellklasse mit allen Annotationen einfügen, die auf Klassenebene verwendet werden? – tkruse

+0

Related: https://StackOverflow.com/Questions/32900551/swagger-apimodelproperty-not-working – tkruse

+0

Vielen Dank für das Hinzufügen wie verwandt, aber das ist traurig, dass es auch keine Antwort gibt. :/ –

Antwort

0

Vielleicht haben Sie die @ApiModel Annotation in Ihren Modellklassen vergessen?

Like:

@ApiModel 
public class PostRequest { 

    @ApiModelProperty(example = "test example") 
    public String test; 

} 

oder Ihr Modell Paket passt nicht, was in der pom.xml gegeben hat.

+0

Nein, ich habe es hinzugefügt, wie ich schon sagte, die Modellklassen sind sogar korrekt eingeordnet, die Felder erscheinen wie erwartet in der swagger.json Datei , aber diese spezielle Anmerkung funktioniert einfach nicht. :/ –

+0

Die Felder würden auch ohne die @ ApiModel Annotation erscheinen, also ist das kein Beweis. – tkruse

1

Ich habe versucht, wieder mit dem Code zu tun, und ich habe festgestellt, dass das Problem auf die Struktur des Projekts ist. Es hat verschiedene Module, und es hat ein Profil für die allgemeine Entwicklung und ein Profil nur für die RESTful API Dokumentation.

Ich war eine Weile abgelenkt und fing an, die Projekte mit mvn clean package zu bauen, und da es eine Version des Projekts installiert hatte, benutzte es es, um die Dokumentation zu erstellen, und deshalb änderte es sich nie, nachdem ich es benutzt hatte mvn clean install im Hauptquellcode konnte ich sehen, dass die Anmerkung irgendeinen Effekt macht.

Es tut mir leid Jungs, es war jenseits aller Informationen, die ich über das Dokumentationsprojekt geben konnte, da es etwas über die gesamte Struktur war, die ich verwende. Aber zumindest werde ich diese Antwort behalten, damit die nächste Person darüber informiert wird.

Vielen Dank für Ihre Aufmerksamkeit!

Verwandte Themen