python - Flask 请求返回 404 未找到
问题描述
我正在为我的 API 使用 Flast Restplus,并且正在编写 Swagger 文档。我将 API 拆分为多个命名空间,但很难获得正确的 url:
活动.py:
activities_api = Namespace("activities", description="activities of the company", path='/')
class Activity(Resource):
def get(self):
pass
@activities_api.doc(params={'name': 'activity name'})
def post(self):
pass
@activities_api.doc(params={'ID': 'activity ID'})
def delete(self, activity_id):
pass
@activities_api.doc(params={'ID': 'ID de l\'activité'})
def put(self, activity_id):
pass
activities_api.add_resource(Activity, '/activities', endpoint='/')
api.py:
from activities import activities_api
app = Flask( __name__)
api = Api(app, prefix='/v1/', default = None, title='API', version='1.0', catch_all_404s=True)
api.add_namespace(activities_api)
在主页中,我得到以下路径:
PUT /v1/activities POST /v1/activities DELETE /v1/activities GET /v1/activities
当我对 /v1/activities 进行 curl GET 时,我得到:
"GET /v1/activities / HTTP/1.1" 404 -
我应该使用blueprints
withNamespaces
吗?这是我的 API 的结构:
app.py
__init__.py
activities.py
就这么简单,但路线是错误的。
解决方案
我认为只有一个小错误。
就是这一行:
api = Api(app, prefix='/v1/', default = None, title='API', version='1.0', catch_all_404s=True)
与其说,不如prefix='/v1/'
试试prefix='/v1'
。因为当您将额外内容添加/
到末尾时,url 将指向/v1//activities
.
推荐阅读
- swagger - 是否可以在 Swashbuckle.AspNetCore 中隐藏 Enum 成员?
- powerapps - 开张时选择表格
- mysql - 在 openshift 上自动化 MYSQL 数据库备份
- php - 如何从 PHP glob 函数中排除文件名中包含特定单词和数字的文件
- c++ - OpenGL ES 2.0 - 多种后期处理效果
- oracle - 查找和关闭新打开的cursers - oracle
- bash - 在终端中使用变量
- php - 当我打开 Xdebug 时,phpunit 引导设置不起作用
- django - django:url标签->如何使用变量作为url_name?
- php - Symfony 4 扩展验证请求