zoukankan      html  css  js  c++  java
  • HTTP传递数据的几种方法

    Http请求的时候,需要传递参数给后端,一般都是key-value的形式,传递的方法有很多种
    例如需要传递的数据是
    dict(key1=value1,key2=value2)

    1. URL参数

    把参数放在URL中,适用于所有的HTTP请求Method,例如GET,POST
    例如:
    http://www.baidu.com?key1=value1&key2=value2;

    对应requests模块的params参数。例如result=requests.post(url,params=data)
    Flask框架中,通过form或者values获取请求数据,例如request.args.get('key1')

    2. Form-data

    也就是通过HTML的FORM标签,传递数据给后端的方法
    整个HTTP请求内容是这样的:

    POST /test?url_key=value1 HTTP/1.1
    Host: 192.168.137.130
    Cache-Control: no-cache
    
    ----WebKitFormBoundaryE19zNvXGzXaLvS5C
    Content-Disposition: form-data; name="key1"
    
    value1
    ----WebKitFormBoundaryE19zNvXGzXaLvS5C
    Content-Disposition: form-data; name="key2"
    
    value2
    ----WebKitFormBoundaryE19zNvXGzXaLvS5C
    

    把参数放在请求体中,使用--webkit这些协议包裹。由于需要用到请求体,所以不支持GET Method。
    Flask框架中,通过form或者values获取请求数据,例如request.form.get('key1')

    3. x-www-form-urlencoded

    跟form-data类似,也是把传递的数据放在请求体,不过请求体的形式相对简单,跟URL参数的形式一样。
    即把传递数据转换为URL参数的形式,然后放在请求体中,而不是请求的URL中。
    同时需要加入请求头:

    Content-Type: application/x-www-form-urlencoded
    

    整个请求内容

    POST /test?url_key=value1 HTTP/1.1
    Host: 192.168.137.130
    Cache-Control: no-cache
    Content-Type: application/x-www-form-urlencoded
    
    key1=value1&key2=value2
    

    对应requests的data参数。例如result=requests.post(url,data=data)
    Flask框架中,通过form或者values获取请求数据,例如request.form.get('key1')

    4. JSON

    请求体放JSON格式的传递数据
    设置请求头:

    Content-Type: application/json
    

    整个请求内容

    POST /test?url_key=value1 HTTP/1.1
    Host: 192.168.137.130
    Content-Type: application/json
    Cache-Control: no-cache
    
    {"key2": "value2", "key1": "value1"}
    

    对应requests模块的json参数。例如result=requests.post(url,json=data)
    Flask框架中,通过json获取请求数据,例如request.json.get('key1')

    其他

    1. 通过Google的拓展程序POSTMAN,可以模拟发送HTTP请求
    2. requests查看请求头和请求体:
    url='http://192.168.137.130/test'
    data=dict(key1='value1',key2='value2')
    result=requests.post(url,json=data)
    print result.request.headers
    print result.request.body
    

    博文为作者原创,未经允许,禁止转载。

  • 相关阅读:
    android细节之禁用activity的系统的默认切换效果
    Spark1.0.0 属性配置
    Memory & MyISAM 引擎小注意! | OurMySQL
    memcached vs MySQL Memory engine table 速度比较_XMPP Jabber即时通讯开发实践_百度空间
    Mysql 官方Memcached 插件初步试用感受
    Aerospike | Aerospike Chinese
    MySQL内存表的特性与使用介绍 -- 简明现代魔法
    memory引擎的索引失效一例
    MySQL内存表(MEMORY)说明 | 一个PHP程序员的备忘录
    MySQL Memory 存储引擎浅析
  • 原文地址:https://www.cnblogs.com/Xjng/p/6198556.html
Copyright © 2011-2022 走看看