Flask Restx возвращает класс, а не фактическую строку возврата - PullRequest
0 голосов
/ 08 марта 2020

Недавно я пытался добавить API, используя flask -restx. У меня какая-то неприятность, даже когда я работаю в helloworld.

У меня есть все в чертежах, поэтому имеет смысл только поместить API в свой собственный проект. Ниже мой api_routes.py

from flask_login import current_user, login_user, logout_user, login_required
from flask_restx import Resource, Api
from flask import Blueprint
import flask
from . import db

api_bp = Blueprint('api_bp', __name__, url_prefix='/api')
api = Api(api_bp, version='1.0', title='Scribe API',
    description='An API for interfacing with Scribe',
)

@api_bp.route("/hello")
class HelloWorld(Resource):
    def get(self):
        return "Hello"

api.add_resource(HelloWorld, '/hello')

Однако, если вы go на пользовательский интерфейс чванства и отправляете вот так:

curl -X GET "http://127.0.0.1:5000/api/hello" -H  "accept: application/json"

Ответ 500:

TypeError: The view function did not return a valid response. The return type must be a string, dict, tuple, Response instance, or WSGI callable, but it was a HelloWorld.

Так что по какой-то странной причине я возвращаю класс, а не фактическую возвращаемую строку «Hello». У кого-нибудь есть идея, почему это так и как это исправить?

1 Ответ

0 голосов
/ 08 марта 2020

Я решил двигаться дальше, вскоре после публикации этого, оказывается, пространства имен являются обязательными, вы можете исправить мой код выше с кодом ниже, чтобы создать пространство имен. Это заставит работать базовый c helloworld.

hello_ns = api.namespace('', description='Hello World Operations')

@hello_ns.route("/hello")
class HelloWorld(Resource):
    def get(self):
        return "Hello"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...