python flask 处理 url param和header和form和json

基于HTTP协议客户端和服务端传递信息通常会把具体的内容放在四个地方。

  1. 放在url的请求参数中,get和post都可以,不过大部分情况下以get居多。
  2. POST 的form中,在服务端渲染表单盛行(struts,flask_wtf)的年代,登陆,注册等基本都是把用户填写的信息放在form中。
  3. post中的json格式,现在最佳的实践方案就是前后端通过restful的API,传递json数据来进行通信。
  4. 还有很多时候是需要获取http的head信息,比如一些auth信息或者referer,useragent的信息等。

获取url和form以及header内容

Postman 发送的http测试请求

POST /test?x=valueX HTTP/1.1
Host: 127.0.0.1:5000
Content-Type: application/x-www-form-urlencoded
z: valueZ
Cache-Control: no-cache
Postman-Token: bb060ed5-783e-6470-05ee-f05a71df972c

y=valueY

处理请求:

from flask import request

@app.route('/test', methods=['GET', 'POST'])
def test():
    # 获取 url 参数内容
    x = request.args.get("x")
    
    # 获取 form 表单内容
    y = request.form.get("y")
    
    # 获取 http 头部内容
    z = request.headers.get("z")
    
    print("x from url param: ", x)
    print("y from form param: ", y)
    print("z from headers: ", z)
    return "test"

获取json内容

发起的请求

POST /test HTTP/1.1
Host: 127.0.0.1:5000
Content-Type: application/json
z: valueZ
Cache-Control: no-cache
Postman-Token: 2b3e8991-a48e-1653-c6e3-1b07d7411a29

{"url": "http://dig404.com"}

处理json请求

@app.route('/test', methods=['GET', 'POST'])
def test():
    
    # 获取json格式的body,返回直接就是dict类型
    content = request.get_json(silent=True)
    content.get('url', None)
    print(content)
    return ""

如果喜欢,您就给个赞呗。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏weixuqin 的专栏

Mac下安装oh-my-zsh

6089
来自专栏xingoo, 一个梦想做发明家的程序员

[logstash-input-file]插件使用详解

  前篇介绍过Logstash的使用,本篇继续深入,介绍下最常用的input插件——file。   这个插件可以从指定的目录或者文件读取内容,输入到管道处理...

1987
来自专栏蓝天

Solution: AC_CONFIG_MACRO_DIR conflicts with ACLOCAL_AMFLAGS

.ibtoolize: AC_CONFIG_MACRO_DIR([./aclocal]) conflicts with ACLOCAL_AMFLAGS=-I ...

871
来自专栏鸿的学习笔记

日志采集技术笔记

使用Linux的rename机制保证文件写入要么成功,要么失败,绝对不能出现写了一半的情况。

3575
来自专栏电光石火

php环境搭建

vcredist_x64传送门:http://pan.baidu.com/s/1qWFW3vu 钥匙:p4op mysql-5.6.25-winx64传送门:h...

4805
来自专栏charles的技术博客

dd硬盘读写性能常用的两种测试命令

先解释下什么是dd命令,dd是 Linux/UNIX 比较有用的命令之一,是用来指定块进行拷贝,并在拷贝的时候指定转换。

1632
来自专栏电光石火

php环境搭建

请先安装vcredist_x64。安装都是按下一步,若干个下一步后就安装成功OK了

2688
来自专栏BeJavaGod

使用shiro自定义过滤器,拦截ajax请求,可用于动静分离

shiro,不多说了,都知道是权限框架 用过shiro的都知道shiro自己有各种过滤器,只要配置好了就可以自动过滤,自动跳转到对应的页面,比如:认证,授权,退...

5885
来自专栏小樱的经验随笔

一个很easy的脚本--php获取服务器端的相关信息

存档: 1 <html> 2 <head> 3 <meta http-equiv="content-type" content="...

3938
来自专栏DeveWork

设置你的Gravatar头像的方法

Gravatar是Globally Recognized Avatar的缩写,是gravatar推出的一项服务,意为“全球公用的头像”。如果在Gravatar的...

2757

扫码关注云+社区

领取腾讯云代金券