前言

这篇博客会介绍最常见post 请求form表单数据json数据
数据类型之间的区别
urllib代码的实现(python)
requests库实现
以及如何使用postman软件发送这些类型数据

下面所有请求的例子,我都会用到一个接口:http://httpbin.org/post
这个接口可以返回提交的数据类型以及请求头信息


数据类型

这里说一个重要的请求头的参数 Content-Type
这个请求头中的参数的作用就是 后端会根据这个字段来解析你提交过去的数据类型,所以代码请求的时候的时候最好将这个字段填写(postman会根据你写入的数据类型自动填写)

1.表单数据

Content-Type: application/x-www-form-urlencoded
简介: 这种数据类型是最常见的,html不依靠js就可以简单实现一个简单的form表单数据提交
数据格式:a=1&b=2
代码实现:

import urllib.parse
import urllib.request
url ="http://httpbin.org/post"
data = {
"a":"1",
"b":"2",
}
data = urllib.parse.urlencode(data).encode()
req = urllib.request.Request(url,data=data,method='POST')
# req.add_header("Content-Type","application/x-www-form-urlencoded") #这里我将添加请求头信息注释也可请求成功,因为默认解析就是表单数据
response = urllib.request.urlopen(req)
print(response.read().decode())

这里我用的是python原生的网络请求库,用这种较为底层的代码演示这个例子,才能更好的说明提交的数据类型差异

注意:
1.经过urllib.parse.urlencode(data)这个函数转换可以将字典的数据类型转换为a=1&b=2
2.所有的post请求提交的数据类型都是字节型数据,也就是要经过encode()

postman提交:

切换到 headers 分栏里面可以看到值已经自动填写了

跟我们前面讲的一致
requests库代码简单实现

import requests
url ="http://httpbin.org/post"
data = {
"a":"1",
"b":"2",
}
response = requests.post(url,data=data)
print(response.text)

2.json数据

Content-Type: application/json
简介: json数据是js中的一个概念,本质其实就是字符串,只不过这个字符串的内容类似于python中的字典,也是键值对的格式
数据格式:'{"a":"1","b":"2"}'
代码实现:

import urllib.parse
import urllib.request
import json
url ="http://httpbin.org/post"
data = {
"a":"1",
"b":"2",
} data = json.dumps(data).encode()
req = urllib.request.Request(url,data=data,method='POST')
req.add_header("Content-Type","application/json") #这里就必须填写了,不填写后端不会按照json去解析
response = urllib.request.urlopen(req)
print(response.read().decode())

这里提交的也可以直接提交字符串(你写的必须是标准的json字符串),不过也是需要encode的,这里我传递一个字典,通过json.dumps将字典转换成一个标准的json字符串

注意:
1.需要加入Content-Type 请求头参数,告诉后端这是一个json 数据类型

postman提交:

这里简单说一下这个postman这个 raw提交,其实你只要知道各种数据类型格式 以及对应的Content-Type格式,无论form表单数据还是json字符串数据都可以通过raw这个项来提交

比如 提交form表单形式,你可以在里面写a=1&b=2,然后将Content-Type 改为application/x-www-form-urlencoded 然后提交,(其实下拉栏里面的text,json,html,xml作用就是判断你输入的数据类型是否合法还有自动设置Content-Type)
requests库代码简单实现

import requests
url ="http://httpbin.org/post"
data = {
"a":"1",
"b":"2",
}
response = requests.post(url,json=data)
print(response.text)

不的不说 requests 库是真的方便,只需要更改一个参数就可以将发送的数据类型由表单数据变为json,但是正是因为方便,很多人都不知道这个库背后做了多少复杂的工作,也不知道json的数据类型和form表单数据类型的区别

POST请求发送的表单数据和json数据的区别及python代码实现的更多相关文章

  1. 扩展JQUERY 表单加载JSON数据

    $.fn.extend({ //表单加载json对象数据 setForm : function (jsonValue) { var obj = this; $.each(jsonValue, func ...

  2. 将form表单转化为json数据

    参考地址:https://github.com/hongymagic/jQuery.serializeObject

  3. 如何发送HTML表单数据

    多数时候,HTML表单的目的只是为了把数据发给服务器,之后服务器再处理这些数据并发送响应给用户.虽然看起来挺简单的,但我们还是得注意一些事情以确保传送的数据不会破坏服务器.或者给你的用户制造麻烦. 数 ...

  4. 【ASP.NET Web API教程】5.3 发送HTML表单数据:文件上传与多部分MIME

    原文:[ASP.NET Web API教程]5.3 发送HTML表单数据:文件上传与多部分MIME 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本系列教程,请先看前面 ...

  5. 【ASP.NET Web API教程】5.2 发送HTML表单数据:URL编码的表单数据

    原文:[ASP.NET Web API教程]5.2 发送HTML表单数据:URL编码的表单数据 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本系列教程,请先看前面的内 ...

  6. (转)WebApi发送HTML表单数据:文件上传与多部分MIME

    5.3 Sending HTML Form Data5.3 发送HTML表单数据(2) 本文引自:http://www.cnblogs.com/r01cn/archive/2012/12/20/282 ...

  7. WebApi发送HTML表单数据:文件上传与多部分MIME

    5.3 Sending HTML Form Data5.3 发送HTML表单数据(2) 本文引自:http://www.cnblogs.com/r01cn/archive/2012/12/20/282 ...

  8. 什么是请求参数、表单参数、url参数、header参数、Cookie参数?一文讲懂

    最近在工作中对 http 的请求参数解析有了进一步的认识,写个小短文记录一下. 回顾下自己的情况,大概就是:有点点网络及编程基础,只需要加深一点点对 HTTP 协议的理解就能弄明白了. 先分享一个小故 ...

  9. 雷林鹏分享:jQuery EasyUI 表单 - 过滤下拉数据网格

    jQuery EasyUI 表单 - 过滤下拉数据网格 下拉数据网格(Combogrid)组件和下拉框(Combobox)组件的共同点是,除了都具有下拉面板以外,它们都是基于数据网格(Datagrid ...

  10. java post请求的表单提交和json提交简单小结

    在java实现http请求时有分为多种参数的传递方式,以下给出通过form表单提交和json提交的参数传递方式: public String POST_FORM(String url, Map< ...

随机推荐

  1. Golang实现set

    背景 Golang语言本身未实现set,但是实现了map golang的map是一种无序的键值对的集合,其中键是唯一的 而set是键的不重复的集合,因此可以用map来实现set Empty 由于map ...

  2. python包合集-argparse

    一.argparse简介 argparse 是 python 自带的命令行参数解析包,可以用来方便的服务命令行参数,使用之前需要先导入包 import argparse 二.简单案例 简单使用,创建一 ...

  3. [Golang] GO 语言工作环境的基本概念

    1. GOPATH 和 GOROOT(环境变量) 1. GOROOT go 编译器.标准库等安装的地方,所有我们写的代码其实都是文本文件而已,需要编译器等工具将其加工成可执行文件或者库文件才能使用,每 ...

  4. 2.云原生之Docker容器环境安装实践

    转载自:https://www.bilibili.com/read/cv15181036/?from=readlist 官方一键安装脚本 补充时间:[2020年4月22日 11:00:59] 一键安装 ...

  5. Elasticsearch:Pinyin 分词器

    Elastic的Medcl提供了一种搜索Pinyin搜索的方法.拼音搜索在很多的应用场景中都有被用到.比如在百度搜索中,我们使用拼音就可以出现汉字: 对于我们中国人来说,拼音搜索也是非常直接的.那么在 ...

  6. Elasticsearch:top_hits aggregation

    top_hits指标聚合器跟踪要聚合的最相关文档. 该聚合器旨在用作子聚合器,以便可以按存储分区汇总最匹配的文档. top_hits聚合器可以有效地用于通过存储桶聚合器按某些字段对结果集进行分组. 一 ...

  7. Deployment故障排除图解

    PDF文件下载地址:https://files.cnblogs.com/files/sanduzxcvbnm/troubleshooting-kubernetes.pdf

  8. 3_JavaScript

    一. 介绍 JavaScript语言诞生主要是完成页面的数据验证, 因此它运行在客户端, 需要运行浏览器来解析执行JavaScript代码 JS是弱类型, Java是强类型 特点 交互性(它可以做的就 ...

  9. 多云容器编排 Karmada-Operator 实践

    作者:vivo 互联网服务器团队-Zhang Rong Karmada作为开源的云原生多云容器编排项目,吸引了众多企业共同参与项目开发,并运行于生产环境中.同时多云也逐步成为数据中心建设的基础架构,多 ...

  10. java连接数据库加载驱动到java项目

    java连接数据库 package com.cook.zheng; import java.sql.Connection; import java.sql.DriverManager; public ...