2017-03-27 2 views
0

Ich bin mit Prahlerei-codegen für ein Java-REST-Client für einen meines REST-APIs zu erzeugen. Die REST-APIs verwenden einen optionalen Header-Parameter. Die generierten Methoden im Client haben einen zusätzlichen Parameter, der den Header übernimmt. Ich möchte, dass die Methoden ohne den Header-Parameter in der Methodensignatur generiert werden. Ich habe die Dokumentation gelesen, konnte aber keine Referenz finden.Prahlerei-CODEGEN Header-Parameter für Java REST-Client

Zum Beispiel für eine GET alle API mit der Option X-CUSTOM-Header-Parameter, swagger-codegen erzeugt eine Methode wie folgt:

public List<SomeType> findAllUsingGET1(String optionalHeader) 

wo, wie ich es sein möchte:

public List<SomeType> findAllUsingGET1() 

für Zeiger für die Problemumgehung der Suche anstatt die Client-Code-Generierung anpassen.

EDIT 1: Hinzufügen der JSON spec

"get": { 
    "summary": "findAll", 
    "operationId": "findAllUsingGET1", 
    "consumes": [ 
     "application/json" 
    ], 
    "produces": [ 
     "application/json" 
    ], 
    "parameters": [ 
     { 
     "name": "X-CUSTOM-HEADER", 
     "in": "header", 
     "description": "Custom Header", 
     "required": false, 
     "type": "string" 
     } 
    ], 
    "responses": { 
     "200": { 
     "description": "OK", 
     "schema": { 
      "type": "string" 
     } 
     }, 
     "401": { 
     "description": "Unauthorized" 
     }, 
     "403": { 
     "description": "Forbidden" 
     }, 
     "404": { 
     "description": "Not Found" 
     } 
    } 
    } 
+0

Könnten Sie den Teil des json/yaml enthalten, die die GET analysiert werden? – moondaisy

+0

@moondaisy - Das JSON-Snippet der API-Spezifikation wurde hinzugefügt. – Mubin

+0

Bitte erläutern Sie ein wenig mehr, warum die Methoden ohne den Header-Parameter in der Methodensignatur generiert werden sollen. Wenn dieser Parameter wirklich optional ist, dann können Sie ihn einfach aus der spec entfernen, so dass Prahlerei codegen es nicht in der Java-Methode Signatur enthalten wird –

Antwort

1

Wenn Sie einen Parameter (optional) aus der Methodensignatur in dem Java-API-Client, der einzige Weg, entfernen wollen, ist den Parameter aus dem Swagger entfernen/OpenAPI-Spezifikation.

Um die Standardschriften hinzufügen, können Sie die addDefaultHeader Methode in ApiClient verwenden können: https://github.com/swagger-api/swagger-codegen/blob/master/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java#L528

UPDATE: Kopfparameter, ähnlich zu bilden, Abfrageparameter werden erzeugt als Methodenargumente. Von dem Entwickler Perspektive, es ist nur ein weiterer Parameter (und sie brauchen nicht zu wissen, ob der Parameter einen Header, Form oder Abfrageparameter ist)

+0

Meine Frage ist nicht zum Entfernen eines optionalen Parameters, es geht darum, den optionalen Header aus der Anfrage aus der Methodensignatur zu entfernen. Meine einzige Sorge ist, warum Swagger-Codegen eine Header-Anfrage als Methode Parameter betrachtet? – Mubin

+0

Header-Parameter, ähnlich wie Formular, Abfrageparameter, werden als Methodenargumente generiert. Aus der Entwicklerperspektive ist es nur ein weiterer Parameter (und sie müssen nicht wissen, ob der Parameter ein Header-, Formular- oder Abfrageparameter ist). –

+0

Danke für den letzten Kommentar. Das klärt meine Frage und ich folge, was ich will, kann nicht erreicht werden, ohne die Swagger-Spec manuell zu modifizieren. Können Sie bitte Ihre Antwort mit dem obigen Kommentar aktualisieren, damit ich sie als Antwort akzeptieren kann? – Mubin

Verwandte Themen