美文网首页pythonFlask
python3 通过Flask实现post接收与返回json的

python3 通过Flask实现post接收与返回json的

作者: Ziger丶 | 来源:发表于2022-06-15 15:37 被阅读0次

    背景:构建了一个分析模型,需要提供给用户远程调用模型,获取到计算结果。
    目标:通过Flask简单搭建一个服务,定义参数,实现远程调用。

    Flask

    一、需求说明

    本地开发了一个自动填充识别地址规范性的模块,可以检测缺失的地址段,并补充上。
    具体需求如下:

    接口地址:http://ip:port/query/rydjdz
    请求类型:application/json
    请求方式:post
    接口备注:根据地址名称匹配标准地址地址编码
    调试工具:Postman

    ***二、Flask 接收请求
    请求包含两个参数dzmc和dzpd,需要通过处理后返回给用户。
    本次测试中模型简化,意思表达到位就行。

    from flask import Flask,request
    import json
    
    app=Flask(__name__)
    
    @app.route("/query/rydjdz",methods=["POST"])
    def rydjdz():
        # 默认返回内容
        return_dict= {'"code"': '1',"message":'',  "data": False}
        # 判断传入的json数据是否为空
        if request.get_data() is None:
            return_dict['return_code'] = '5004'
            return_dict['return_info'] = '请求参数为空'
            return json.dumps(return_dict, ensure_ascii=False)
        # 获取传入的参数
        get_Data=request.get_data()
        # 传入的参数为bytes类型,需要转化成json
        get_Data=json.loads(get_Data)    
        dzmc = get_Data.get('dzmc')
        dzpd= get_Data.get('dzpd')
        # 对参数进行操作
        zt = zt_model(dzmc)
        return_dict['data'] = test_model(dzmc,dzpd,zt)
        
        return (json.dumps(return_dict, ensure_ascii=False))
    
        # 功能函数
    def zt_model(dzmc):
        if len(dzmc) > 10:
            zt = '正确'
        else :
            zt = '错误'
        return (zt)
        
    def test_model(dzmc,dzpd,zt):
        result_str = "本地{},状态为{},地址判断结果为{}".format(dzmc,dzpd,zt)
        return (result_str)
    
    if __name__ == '__main__':
        app.run(debug=True)
    

    直接运行后会报错

     * Serving Flask app "__main__" (lazy loading)
     * Environment: production
       WARNING: This is a development server. Do not use it in a production deployment.
       Use a production WSGI server instead.
     * Debug mode: on
     * Restarting with stat
    An exception has occurred, use %tb to see the full traceback.
    
    SystemExit: 1
    
    D:\Program\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py:3334: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
      warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)
    

    查看了解决方式后将代码修改:

    from gevent import pywsgi
    
    if __name__ == '__main__':
        server = pywsgi.WSGIServer(('0.0.0.0', 5000), app)
        server.serve_forever()
    

    三、发送请求测试

    import requests 
     
    url = "http://ip:port/query/rydjdz"
    data = '''{
            "dzmc": "hanzhichao",
            "dzpd": 18
            }''' 
    res = requests.post(url=url, data=data) #  data支持字典或字符串
    print(res.text) #查看请求详情
    print(res.json) #查看接收结果
    

    或者通过postman进行请求发送


    请求结果

    四、其他

    多个参数进行修改:

    [{"dzmc":"AAAAAA","dzpd":1},{"dzmc":"BBBBBB","dzpd":1}]
    

    相关文章

      网友评论

        本文标题:python3 通过Flask实现post接收与返回json的

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