总之,我一直在按照烧瓶 restx 教程制作 api,但是我的端点都没有出现在 swagger 页面上(“规范中没有定义操作!”),每当我调用它们时,我都会得到 404
我主要按照这个https://flask-restx.readthedocs.io/en/latest/scaling.html创建了我的 api
我正在使用 python 3.8.3 作为参考。
我正在做的一个简化示例如下。
简而言之,我的问题是,我错过了什么?目前对为什么这不起作用空白。
目录结构
project/
- __init__.py
- views/
- __init__.py
- test.py
manage.py
requirements.txt
文件内容
要求.txt
Flask-RESTX==0.2.0
Flask-Script==2.0.6
管理.py
from flask_script import Manager
from project import app
manager = Manager(app)
if __name__ == '__main__':
manager.run()
项目/初始化.py
from flask import Flask
from project.views import api
app = Flask(__name__)
api.init_app(app)
项目/视图/初始化.py
from flask_restx import Api, Namespace, fields
api = Api(
title='TEST API',
version='1.0',
description='Testing Flask-RestX API.'
)
# Namespaces
ns_test = Namespace('test', description='a test namespace')
# Models
custom_greeting_model = ns_test.model('Custom', {
'greeting': fields.String(required=True),
})
# Add namespaces
api.add_namespace(ns_test)
项目/视图/test.py
from flask_restx import Resource
from project.views import ns_test, custom_greeting_model
custom_greetings = list()
@ns_test.route('/')
class Hello(Resource):
@ns_test.doc('say_hello')
def get(self):
return 'hello', 200
@ns_test.route('/custom')
class Custom(Resource):
@ns_test.doc('custom_hello')
@ns_test.expect(custom_greeting_model)
@ns_test.marshal_with(custom_greeting_model)
def post(self, **kwargs):
custom_greetings.append(greeting)
pos = len(custom_greetings) - 1
return [{'id': pos, 'greeting': greeting}], 200
我如何测试和我的期望
所以转到招摇页面,我希望定义的 2 个端点在那里,但我只看到上述错误。
只是在外壳中使用 Ipython,我尝试使用请求来跟踪调用并返回 404。
import json
import requests as r
base_url = 'http://127.0.0.1:5000/'
response = r.get(base_url + 'api/test')
response
response = r.get(base_url + 'api/test/')
response
data = json.dumps({'greeting': 'hi'})
response = r.post(base_url + 'test/custom', data=data)
response
data = json.dumps({'greeting': 'hi'})
response = r.post(base_url + 'test/custom/', data=data)
response