2017-03-03 1 views
0

J'utilise éditeur de fanfaronnades (version 2.10.5) pour générer un api flacon qui utilise en-têtes personnalisés et a commencé à ajouter la ligne suivante à chaque chemin:têtes de serveur de flacon auto-généré Swagger

parameters: 
    - $ref: '#/parameters/X-Forwarded-Host' 

la définition relative:

X-Forwarded-Host: 
    name: 'X-Forwarded-Host' 
    in: header 
    description: Forwarded host header 
    required: true 
    type: string 

Puis exécuter le serveur flacon généré automatiquement-

$ python3 -m swagger_server 

crée une pr oblèmes:

  • Lorsque vous faites une demande boucle, en-têtes ne sont pas droit évalués:

    $ curl -X GET --header 'Accept: application/json' --header 'X-Forwarded-Host: example.com' http://localhost:8080 
    

    retours

    health_get() missing required positional argument: 'X_Forwarded_Host' 
    
  • tests générés automatiquement sont inutiles aussi:

    headers = [('X_Forwarded_Host', 'X_Forwarded_Host_example'), ... 
    

Qu'est-ce que je fais mal? Pourquoi est-ce que swagger-editor (ou codegen) met tout "-" à "_"?

Merci à l'avance

Répondre

0

Ok, je cernées ..

Le problème n'a pas été avec fanfaronnades-éditeur lui-même, mais la façon dont il génère le code flacon (Connexion).

Traitement des demandes de Connexion docs (url) dit:.

« Actuellement, les paramètres d'en-tête ne sont pas transmis aux fonctions de gestionnaire en tant que paramètres Mais ils sont accessibles à travers les connexion.request.headers sous-jacents objet alias l'objet flask.request.headers. "

La solution est de supprimer toutes les fonctions attributs (par rapport aux en-têtes) du contrôleur généré automatiquement et les ramasser de l'objet de la demande, donc:

De:

def health_get(X_Forwarded_Host): 
    ... 

Pour:

def health_get(): 
    forwarded_host = connexion.request.headers['X-Forwarded-Host'] 

Au revoir!