В конфигурации файла swagger можно получить 2 параметра в пути

У меня проблема с файлом yaml Flask, Connexion и Swagger. Я должен определить путь как: /price/{code1}/{code2}.

В моем файле yaml я установил корневой путь как:

paths:
  /price/{code1}/{code2}:
    get:
      operationId: lib.pack.test
      parameters:
      - in: path
        name: code1
        required: true
        type: string
        description: "code 1"
      - in: path
        name: code2
        reguired: true
        type: string
        description: "code 2"

Когда я запускаю server.py, я получаю эту ошибку:

connexion.exceptions.InvalidSpecification: {'reguired': True, 'in': 'path', 'type': 'string', 'description': 'code 2', 'name': 'code'} is not valid under any of the given schemas

Failed validating 'oneOf' in schema['properties']['paths']['patternProperties']['^/']['properties']['get']['properties']['parameters']['items']:
    {'oneOf': [{'$ref': '#/definitions/parameter'},
               {'$ref': '#/definitions/jsonReference'}]}

On instance['paths']['/price/{code1}/{code2}']['get']['parameters'][1]:
    {'description': 'code 2',
     'in': 'path',
     'name': 'code2',
     'reguired': True,
     'type': 'string'}

Если я удалю {code2}, сервер запустится правильно.

  • Питон 2.7
  • Колба 1.0.2
  • Связь 2.2.0

Это мой код:

Сервер.py

from flask import render_template
import connexion

# Create the application instance
app = connexion.App(__name__, specification_dir = "configuration/")
app.add_api('swagger.yml')
app.run(port=5000, debug=True)


# Create a URL route in our application for "/"
@app.route('/')
def home():
    """
    This function just responds to the browser ULR
    localhost:5000/

    :return:        the rendered template 'home.html'
    """
    return render_template('home.html')


# If we're running in stand alone mode, run the application
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

А это Ямл

swagger: "2.0"
info:
  description: This is the swagger file that goes with our server code
  version: "1.0.0"
  title: Server crawler REST
consumes:
  - "application/json"
produces:
  - "application/json"

basePath: "/api"

paths:
  /avgprice/{code1}/{code2}:
    get:
      operationId: "lib.pack.test"
      tags:
        - "Avgprice"
      summary: "Avg price"
      description: "Calculator system to define AVG price from code1/code2"
      parameters:
        - in: path
          name: code1
          required: true
          type: string
        - in: path
          name: code2
          reguired: true
          type: string
      responses:
        200:
          description: "Successful"
          schema:
            type: "array"
            items:
              properties:
                id_code1:
                  type: "integer"
                code1:
                  type: "string"
                id_code2:
                  type: "integer"
                code2:
                  type: "string"
                price:
                  type: "integer"

Можете ли вы поставить свой код, пожалуйста?

Carlo 1585 21.01.2019 17:55

добавляю свой код..

Matteo Furletti 21.01.2019 21:14
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
957
1

Ответы 1

Я нашел решение :)

Я ошибся, написав файл YAML

- in: path
  name: code2
  **reguired: true** <-- required: true
  type: string
  description: "code 2"

Другие вопросы по теме