python学习之flask模块

flask模块的基本使用

Posted by YangSijie on June 11, 2018

Flask模块

1.首先一个基本的demo:

from flask import Flask


app = Flask(__name__)

@app.route('/hello')
def hello_world():
    return ('hello, world!\n')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5147)

host=0.0.0.0表示可以接收任意的连接,port=5147表示监听的是5147端口

2.也可以通过flask获取参数:

  • 当使用GET时:

      curl -X GET "http://localhost:8000/check_your_status?username=admin&password=123456"
    

    可以使用request.args.get()获取指定的参数的值:

      from flask import request
        
      @app.route('/get_args_GET', methods=['GET'])
      def get_args_GET():
          username = request.args.get('username')
          password = request.args.get('password')
          return ('OK\n')
    

    当使用request.args.items()可以直接获取所有的参数,类型为list,如: [(‘username’, u’admin’), (‘password’, u’123456’)]

  • 当使用POST时(此时的参数是在Header中):

      curl -d "user=Summer&passwd=12345678" "http://127.0.0.1:8080/check_your_status"
    

    可以使用flask的request.form()方法获取Header中的参数:

      from flask import request
        
      @app.route('/hello', methods=['POST'])
      def hello_world():
          user = request.form('user')
          passwd = request.form('passwd')
          return ('username: %s\npassword: %s\n' % (user, passwd))
    
  • 当使用POST时(此时的参数是在Body中):

      curl -X POST -H "Content-Type:application/json" --data '{"message": "sunshine"}' http://localhost:8000/check_your_status
    

    可以使用flask的request.get_data()request.get_json()获取,最好使用get_data()

      from flask import request
        
      @app.route('/get_data', methods=['POST'])
      def get_data():
          data = request.get_data()
          ...
          return ('OK\n')
    

3.使用jsonify()函数将消息序列化为json,并且自动将Content-Type修改为json发送给客户端:

from flask import jsonify

@app.route('/test_jsonify')
def test_jsonify():
    a = {'name': 'ysj', 'sex': 'man'}
    return jsonify(a)

4.一般使用request.get_data()获得的数据,由于是str类型的,所以需要解析成json格式,方便处理:

from flask import jsonify
import json

@app.route('/get_data', methods=['POST'])
def get_data():
    data = request.get_data()
    data = json.loads(data)
    # 对数据进行处理
    return jsonify(data)