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

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

HTTP传递数据的几种方法的更多相关文章

  1. 5.MVC框架开发(强类型开发,控制器向界面传递数据的几种方法)

    界面表单中的表单元素名字和数据库表的字段名相一一映射(需要哪个表的数据就是那个表的模型(Model)) 在View页面中可以指定页面从属于哪个模型 注:以上的关系可以通过MVC的强类型视图开发来解决我 ...

  2. react在router中传递数据的2种方法

    概述 不传递数据叫什么单页面应用,渲染模块还需要http请求算什么单页面应用. 本文总结了react-router4中使用BrowserRouter时传递数据的两种方法,供以后开发参考,相信对其他人也 ...

  3. Java多线程初学者指南(7):向线程传递数据的三种方法

    在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果.但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别.由于线程 ...

  4. 译:什么是ViewData的, ViewBag和TempData? - MVC为当前和后续请求之间传递数据的三种方法

    译文出处:http://www.codeproject.com/Articles/476967/WhatplusisplusViewData-cplusViewBagplusandplusTem AS ...

  5. Java多线程初学者指南(8):从线程返回数据的两种方法

    从线程中返回数据和向线程传递数据类似.也可以通过类成员以及回调函数来返回数据.但类成员在返回数据和传递数据时有一些区别,下面让我们来看看它们区别在哪. 一.通过类变量和方法返回数据 使用这种方法返回数 ...

  6. .NET MVC控制器向视图传递数据的四种方式

    .NET MVC控制器向视图传递数据的四种方式: 1.ViewBag  ViewBag.Mvc="mvc"; 2.ViewData ViewBag["Mvc"] ...

  7. Angular 向组件传递模板的几种方法

    最近在写一个日期选择器组件,为了满足将来可能出现的各种需求,所以需要能够高度的自定义组件的样式.为了达到这个目的,需要能够在日期选择器组件外控制每个日期格子内要显示的内容,比如,标上节假日之类的.这时 ...

  8. react之传递数据的几种方式props传值、路由传值、状态提升、redux、context

    react之传递数据的几种方式 1.父子传值 父传值:<子的标签 value={'aaa'} index={'bbb'}></子的标签> 子接值:<li key={thi ...

  9. EF5+MVC4系列(7) 后台SelectListItem传值给前台显示Select下拉框;后台Action接收浏览器传值的4种方式; 后台Action向前台View视图传递数据的四种方式(ViewDate,TempDate,ViewBag,Model (实际是ViewDate.Model传值))

    一:后台使用SelectListItem 传值给前台显示Select下拉框 我们先来看数据库的订单表,里面有3条订单,他们的用户id对应了 UserInfo用户表的数据,现在我们要做的是添加一个Ord ...

随机推荐

  1. 【阿里云产品公测】消息队列服务MQS使用分享

    作者:阿里云用户 wiwi 消息队列MQS,顾名思义,是用于发送接收消息用的.废话不说,直接进入主题. 使用场景:服务添加了一个新功能,主要用于生成图片,本人用的开发语言是PHP,生成图片比较耗服务器 ...

  2. 【Shell脚本学习20】Shell until循环

    until 循环执行一系列命令直至条件为 true 时停止.until 循环与 while 循环在处理方式上刚好相反.一般while循环优于until循环,但在某些时候,也只是极少数情况下,until ...

  3. web前端开发(5)

    CSS的一些问题: 一般情况下,尽量使用class选择器 解决点击超链接后hover 样式不出现多次问题:a:visited  a:hover 的顺序是问题所在,记住 love hate  L(lin ...

  4. Sublime Text shift+ctrl妙用

    1 :按住shift+ctrl然后按←或→可快速选中一行中的某一部分,相当于双击鼠标选中. 当你想在代码末尾加注释的话,这个方法很好用 输入文字->光标移到文字末尾->按住shift+ct ...

  5. 剑指Offer06 旋转数组的最小值

    /************************************************************************* > File Name: 06_MinNum ...

  6. Flume与Kafka集成

    一.Flume介绍 Flume是一个分布式.可靠.和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据:同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能 ...

  7. 对Json字符串进行格式化显示

    很多时候,我们拿Json字符串作为返回结果,但是当数据量多的时候,一堆的Json字符串看起来很不直观,这时候我们可以使用以下办法将Json字符串格式化一下再输出 var JsonUti = { //定 ...

  8. iOS学习笔记--OC系列(1)

    前言 从学校毕业进入公司工作已经第3个年头了,回顾这3年的经历,有种迷茫的感觉.在公司我主要是做零售业公司的系统维护,接触的主要是Oracle的Database的东西.但是业务知识和oracle,都没 ...

  9. Weex

    今天在群友发的那个掘金技术网站里头看到这个weex,感觉还不错 阿里负责的一个开源项目 源码地址: http://alibaba.github.io/weex/index.html 是用来做app的 ...

  10. 20141124-HTML-JavaScrilpt

    JavaScript JavaScript(简称JS),他是一门HTML的脚本语言,用来改进设计.验证表单.检测浏览器.创建cookies,以及更多的应用. 他的用法及语法类似于Visual Stud ...