首页 > 解决方案 > 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 -

我应该使用blueprintswithNamespaces吗?这是我的 API 的结构:

app.py
__init__.py
activities.py

就这么简单,但路线是错误的。

标签: pythonflask-restful

解决方案


我认为只有一个小错误。

就是这一行:

api = Api(app, prefix='/v1/', default = None, title='API', version='1.0', catch_all_404s=True)

与其说,不如prefix='/v1/'试试prefix='/v1'。因为当您将额外内容添加/到末尾时,url 将指向/v1//activities.


推荐阅读