Я пытаюсь задокументировать уже существующий Python API с помощью Swagger . Я написал swagger.yaml для каждого маршрута, задокументированного с помощью их editor . Теперь я хотел бы развернуть документацию, используя connexion .
(краткий пример файла swagger.yaml)
swagger: "2.0"
info:
description: "This is a description of the routes of the API"
version: "1.0.0"
title: "API"
basePath: "/api"
paths:
/home:
get:
tags:
- "API"
summary: "Home of the application"
operationId: home
responses:
200:
description: "Success"
schema:
type: object
properties:
user_id:
type: string
username:
type: string
403:
description: "Limit of api connections overrun"
Я изменил приложение Flask с помощью connectxion.app во время запуска сервера и смог указать файл .yaml. Но когда я пытаюсь запустить его, он мгновенно вылетает:
File "/usr/local/lib/python2.7/dist-packages/connexion/utils.py", line 74, in get_function_from_name
raise ValueError("Empty function name")
exceptions.ValueError: Empty function name
Насколько я понимаю, связь будет основываться на функции ручного тестирования объекта идентификатор операции на каждом маршруте, который должен указывать на функцию, обрабатывающую запрос.
Проблема: каждый маршрут API определяется как вложенная функция.
def add_routes(app, oauth):
@app.route('/api/home', methods=['GET'])
@oauth.require_oauth()
def home():
user = request.oauth.user
return jsonify(
user_id=user.user_id,
username=user.username
)
Я знаю, что вложенные функции в python на самом деле вовсе не являются функциями: не могут вызываться, просто присутствуют в языке, чтобы мы, программисты, могли организовать наш код.
Я думаю, что это может быть проблемой с connectxion, он просто не способен найти эти функции и отобразить их для функции ручного тестирования, но я не уверен, как это исправить. Видите ли вы что-то, что позволило бы подключению отобразить функцию без необходимости рефакторинга всего API, чтобы не иметь вложенных функций?
Большое спасибо за любую помощь.