美文网首页
Flask - 05 请求和响应

Flask - 05 请求和响应

作者: Lisa_Guo | 来源:发表于2019-11-20 14:39 被阅读0次

Flask提供了全局的request和 response 来封装客户端请求及服务端响应对象

request请求对象

  • request.args获取通过url(如?key=value)提供的参数
from flask import Flask, request, jsonify
app = Flask(__name__)
tasks = []

@app.route('/get/'])
def get_task():
    if not request.args or 'id' not in request.args:
        # 没有指定id则返回全部
        return jsonify(tasks)
    else:
        task_id = request.args['id']
        task = list(filter(lambda t: t['id'] == int(task_id), tasks))
        return jsonify(task[0]) if len(task)>0 else jsonify({'result': 'not found'})
  • request.form获取通过表单提交的参数
@app.route('/login', methods=['POST'])
def login():
   error = None
   if valid_login(request.form['username'], request.form['password']):
        return log_the_user_in(request.form['username'])
   else:
        error = 'Invalid username/password'
  • request.json获取json参数
@app.route('/login', methods=['POST'])
def login():
    if not request.json:
        task = {
          "id": request.json["id"],
          "task": request.json["task"]
        }
       tasks.append(task)
       return jsonify({'result': 'add successfully'})
   else:
       return jsonify({'result': 'error'})
  • request.files获取上传文件
    浏览器页面必须制定enctype="multipart/form-data"才会向服务器传送文件,已上传的文件在服务器内存,可通过save()保存文件
from flask import request

@app.route('/upload', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        f = request.files['the_file']
        f.save('/var/www/uploads/uploaded_file.txt')

详细可参加上传文件方案

  • request.cookies操作cookies

读取 cookies:

from flask import request

@app.route('/')
def index():
    username = request.cookies.get('username')
    # use cookies.get(key) instead of cookies[key] to not get a
    # KeyError if the cookie is missing.

储存 cookies:

from flask import make_response

@app.route('/')
def index():
    resp = make_response(render_template(...))
    resp.set_cookie('username', 'the username')
    return resp

response响应对象

json是目前api最常用的传输格式,可通过falsk.jsonify()返回

@app.route('/get/<id>', methods=['GET'])
def get_task(id)
      task = list(filter(lambda t: t['id'] == int(id), tasks))
      return jsonify(task[0]) if len(task)>0 else jsonify({'result': 'not found'})

相关文章

  • Flask - 05 请求和响应

    Flask提供了全局的request和 response 来封装客户端请求及服务端响应对象 request请求对象...

  • Flask学习日志(四) - Flask请求上下文与响应

    文 / 秦未 OK,今天学习Flask的请求上下文与响应,我们先看一看Flask请求和响应的过程示意图: 首先我们...

  • 本地配置httpbin

    httpbin是一个开源项目,使用Python+Flask编写,利用它可以测试各种HTTP请求和响应。官网:htt...

  • 学flask的第三天之请求响应

    请求和响应对象 request对象  在flask中,request是属于内置对象的,你只需要在使用的时候先将re...

  • Python Flask学习知识点(六)

    Flask多线程机制 发送请求和服务器处理请求的线程之间的关系?客户端发送十个请求,Flask开启多少个线程处理请...

  • 从一个例子了解请求和响应中的参数

    HTTP 协议规定了请求和响应的格式和行为,这里通过分析百度首页的请求和响应,来了解请求和响应中的各种参数。浏览器...

  • 2018-05-22 仿简书的响应式导航栏

    如果你对响应式还一窍不通,请参考2018-05-21 响应式设计,开始你的响应式设计之旅。 1.查看简书的响应式 ...

  • 请求和响应

    Server(服务端)、Client(客户端) 浏览器发出请求,服务器在80端口接收请求;服务器返回内容(响应),...

  • 请求和响应

    Django REST framework 处理请求和响应有以下几个关键点。 1. 请求对象(Request ob...

  • 请求和响应

    HttpServletRespone对象: 应用: HttpServletRequest对象: 应用: Reque...

网友评论

      本文标题:Flask - 05 请求和响应

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