美文网首页
Python 开发简单的 web API

Python 开发简单的 web API

作者: Sui_Xin | 来源:发表于2020-05-07 21:22 被阅读0次

    本文首发于我的个人博客 Sui Xin’s Blog
    原文:https://suixinblog.cn/2019/09/flask.html
    作者:Sui Xin

    Flask 是一个简单的 Python web 框架,使用它只用几行代码就可以实现一个小型 Python web 服务。
    最近模型与前端整合的时候刚好用到,遂记录一下它的用法。

    一个简单的小例子

    from flask import Flask
    app = Flask(__name__)
    
    
    @app.route("/")
    def welcome():
        return "Hello World!"
    
    
    if __name__ == "__main__":
        app.run()
    

    运行之后访问 5000 端口即可看到结果。

    Flask hello world

    基本参数设置

    设置 URL 及请求方式

    Flask.route(rule, methods=["GET"])

    • rule:指定的 URL。
    • methods:允许的请求方式,默认只响应 GET 请求。

    解析 GET 请求参数

    解析 GET 参数有两种方式,第二种较为灵活,更推荐第二种使用方式。

    第一种:变量转换

    @app.route("/user/<string:user_name>")
    def welcome(user_name):
        return "Hello {}".format(user_name)
    
    @app.route("/user/<int:id>")
    def welcome(id):
        return "Here is No.{}".format(id)
    

    目前支持的转换类型有 stringintfloat 等。使用局限性较大。

    第二种:从 URL 中解析

    from flask import Flask, request
    app = Flask(__name__)
    
    
    @app.route("/search")
    def compute():
        # 假设发送的请求链接为 http://localhost:5000/search?a=2&b=3
        # 可通过 request 来得到参数
        a = request.args.get("a")
        b = request.args.get("b")
        
        res = int(a) + int(b)
        return res
    

    解析 POST 请求参数

    from flask import Flask, request, jsonify
    app = Falsk(__name__)
    
    
    @app.route("/compute", methods=["POST"])
    def compute():
        # 这里客户端发送的请求数据类似于 {"number": 2}
        json_data = request.json
        number = json_data["number"]
        
        result = number ** 2
        return jsonify(res=result)
    

    返回 json 数据

    除了直接使用 Python 内置的 dict 构建 json 格式数据返回之外,还可以使用 flask.jsonify 返回 json 类数据。

    from flask import Flask, request, jsonify
    app = Flask(__name__)
    
    
    @app.route("/search")
    def compute():
        a = request.args.get("a")
        b = request.args.get("b")
        res = int(a) + int(b)
        
        return jsonify(a=a, b=b, res=res)
        # 或者
        # return jsonify({"a": a, "b": b, "res": res})
    

    配置链接与端口

    app.run(host="localhost", port=5000, debug=True)
    

    host 设置为 0.0.0.0 可使用外网访问。

    当然,Flask 可以实现标准的 RESTful API,也能实现更复杂的功能,如捕获异常等,甚至可以真正的与数据库打通构建更复杂的功能,但这已超出了本文的范围,有需要请移步 Flask User’s Guide

    相关文章

      网友评论

          本文标题:Python 开发简单的 web API

          本文链接:https://www.haomeiwen.com/subject/ipwzghtx.html