Flask-Restplus не может найти какой-либо маршрут - PullRequest
0 голосов
/ 30 ноября 2018

Я только начал использовать эту библиотеку, поэтому, пожалуйста, исправьте меня, если я что-то не так говорю.

Насколько я понимаю, проект является своего рода контейнером для пространств имен.Например, я хочу указать план для работы с глобальными объектами (например, проектами):

from flask_restplus import Api
from flask import Blueprint
from app.global.projects import projects

global= Blueprint('global', __name__)

api = Api (global)

api.add_namespace(projects)

Я регистрирую этот план для приложения:

from app.global import global
app.register_blueprint(global, '/global') #<== prefix

Затем я указываю пространство имен с маршрутами:

from flask_restplus import Namespace, Resource, fields

projects = Namespace('projects')

@projects.route('/projects')
class ProjectResource(Resource):
    def post(self):
        return {
            'num': 42
        }

Итак, насколько я понимаю, если я отправлю POST на следующий URL

127.0.0.1:5000/global/projects 

, у меня будет {'num': 42}

Но у меня только 404. Где ошибка?

1 Ответ

0 голосов
/ 30 ноября 2018

Ваш код не является допустимым синтаксисом Python (глобальные ключевые слова как имя переменной), поэтому, к сожалению, я не смог его протестировать.

Но вот аналогичный рабочий пример с App, Blueprints,Api и Namespace работают вместе.

Приложение

# run.py

from flask import Flask
from .api import blueprint

app = Flask(__name__)
app.register_blueprint(blueprint, url_prefix='')
app.run(debug=True)

План

# api.py

from flask import Blueprint
from flask_restplus import Api, Namespace, Resource

blueprint = Blueprint('api', __name__, url_prefix='/api')
api = Api(blueprint)
global_namespace = Namespace('global', path='/global')
api.add_namespace(global_namespace)


@global_namespace.route('/projects')
class ProjectResource(Resource):
    def get(self):
        return {'num': 42}

Тест

$ python run.py
$ ...
$  curl http://127.0.0.1:5000/api/global/projects
{
   "num": 42
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...