为了账号安全,请及时绑定邮箱和手机立即绑定

如何修复 Flask RESTful api 服务器端点失败问题?

如何修复 Flask RESTful api 服务器端点失败问题?

慕森卡 2022-10-11 10:34:42
我是使用 openapi sepc 进行 api 开发的新手,所以我关注了这个博客,在那里我只是使用服务器工件来理解代码。我用于/openapi/photo_album/codegen_server我的简单工作。为此,我下载了文件并尝试在默认服务器端点上运行服务器。我安装了所有必需的依赖项并点击python -m openapi_server,但浏览器端点总是用以下错误消息困扰我:{ "detail": "在服务器上找不到请求的 URL。如果您手动输入 URL,请检查您的拼写并重试。","status": 404, "title": "Not Found", "type" :“关于:空白”}我的尝试这是我尝试过的源代码:我还尝试了以下方法:import connexionfrom openapi_server import encoderdef main():    app = connexion.App(__name__, specification_dir='./openapi/')    app.app.json_encoder = encoder.JSONEncoder    app.add_api('openapi.yaml', arguments={'title': 'Sample OpenAPI Specification'})    app.run(host='127.0.0.1',port=5000, debug=True)if __name__ == '__main__':    main()我尝试关闭防火墙并尝试访问服务器端点,但仍然无法正常工作。我正在为我的系统使用 windows-x64,这是我第一次尝试使用 api 开发。我不知道发生了什么以及如何解决我的问题。即使我尝试使用 cmdroute print -4并ping 127.0.0.1尝试使用本地 ipv4 地址,但仍然无法正常工作。我的意图是向默认服务器端点发出请求并进行基本的 api 测试。谁能提供可能的解决方案如何解决此错误?任何快速的解决方案?谢谢更新:我在我的Windows机器上尝试了任何flask rest api示例项目,它们都不起作用,服务器端点总是失败。那是因为我的本地机器设置吗?这个错误正在杀死我,如何解决这个问题?任何快速的解决方案?谢谢
查看完整描述

1 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

我通过更新解决了这个connexion==2.6.0问题requirements。同样使用不同的值hostport将在默认端点上运行服务器。此源代码存在一些问题,因为代码是由 openapi 代码生成器生成的,无法保证示例 api 服务器运行。我最近对 api 开发的观察是使用 flask-restplus,它在服务器端点上带有漂亮的 UI api 视图。

这是使用flask-restplus的测试api,希望flask-restplus API开发的新手觉得有用。

from flask import Flask

from flask_restplus import Api, fields, Resource, marshal


app = Flask(__name__)

api = Api()

api.init_app(app)


metadata_model = api.model("metadata", {

    'file': fields.String()

})


user_model = api.model('UserModel', {

          "user_id": fields.Integer(required=True, description=''),

          "user_name": fields.String(required=True, description=''),

          "user_role": fields.String(required=False, description='')

})


response_model = api.model("Result", {

    'metadata': fields.List(fields.Nested(metadata_model)),

    'result': fields.Raw()

})



@api.route("/test")

class ApiView(Resource):


    @api.marshal_with(response_model)

    def get(self):


        data = {'metadata': {},

                'result': self.get_user()}

        return data



    def get_user(self):

        # Access database and get data

        user_data = [{'user_id': 1, 'user_name': 'John', 'user_role': 'editor'},

                     {'user_id': 2, 'user_name': 'Sue', 'user_role': 'curator'}]


        # The kwarg envelope does the trick

        return marshal(user_data, user_model, envelope='data')



app.run(host='127.0.0.1', port='8080', debug=True)



查看完整回答
反对 回复 2022-10-11
  • 1 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号