使用js向后台发送数据,并且使用postman四种发送数据的方式进行模拟(前后端分离)

postman

Postman是一款功能强大的网页调试与发送网页HTTP请求的软件,能模拟前端请求的发送

对于postman发送请求的方式,有下图的这几种(下面我们主要挑四个常用的说说)
在这里插入图片描述

1.form-data

就是我们上传文件时使用的multipart/form-data,它将表单的数据组织成Key-Value形式,用分隔符boundary将表单的数据处理成一条消息。这种方式的数据发送,所以既可以上传文件,也可以上传参数,只能是POST请求。(分割方式如下图)

在这里插入图片描述

postman模拟请求的发送
在这里插入图片描述
js文件中获取表单中的数据(包含文件),用ajax技术发送到后台中

// $("#shop-img")[0]把jQuery对象转换成javascript对象,.files[0]表示可能上传多个文件,获取第一个文件流
var shopImg = $("#shop-img")[0].files[0];//获取文件
// 把shop信息和shopImg文件流存进FormData中,FormData是手动创建的表单,以key/value的形式传到后台中,可以通过request获取
// value可以是字符串、File、Blob,如果不是File和Blob会自动转换成字符串
var formData = new FormData();
formData.append("name", "张三");
formData.append("shopImg", shopImg);
$.ajax({
	url : isEdit?modifyShopUrl:registerShopUrl,
	type : 'POST',
	// 不设置内容类型
	contentType : false,
	// 如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。默认情况下,
	// 通过data选项传递进来的数据,如果是一个对象(技术上讲只要不是字符串),都会处理转化成一个查询字符串
	processData : false,
	cache : false,
	data : formData,
	dataType : "json",
	success : function(data) {
		//处理返回的数据
	})
});

注意

在使用了springmvc的项目中,如果需要使用form-data(即multipart/form-data)上传数据,那么一定要配置文件解析器。

2.x-www-form-urlencodeed

就是application/x-www-from-urlencoded(我们平常使用最多的表单上传,其中不包含文件上传项),会将表单内的数据转换为键值对,可以是GET请求,也可以是POST请求。

postman模拟请求的发送
在这里插入图片描述

js文件中获取表单中的数据(不包含文件),用ajax技术发送到后台中

//用js对象或者josn对象封装数据,再通过ajax技术传到后台中,其实就等同于传一个个键值对
$(function () {
    var obj={};
    obj.name=$("name").val();//obj.name="张三";
    $.ajax({
        url: "/param/test1",
        type:"POST",
        contentType:"application/x-www-form-urlencoded",
        data:obj,//obj={name="张三"}
        dataType:"json",
        success:function(data){
        }
    })
})

3.raw

可以上传任意格式的文本,可以上传textjsonxmlhtml等。但我们使用最多的是发送json字符串,传输时content-typeapplication/json

postman模拟请求的发送
在这里插入图片描述

js文件中获取表单中的数据,用ajax技术发送到后台中

//用js对象或者josn对象封装数据,再转换成json字符串,通过ajax技术传到后台中
$(function () {
    var obj={};
    obj.name="张三";
    obj.age=10;
    $.ajax({
        url: "/param/test1",
        type:"POST",
        contentType:"application/json",//contentType必须为application/json
        data:JSON.stringify(obj),//把json对象转换为json字符串
        dataType:"json",
        success:function(data){
        }
    })
})

注意

如果后台使用springmvc来接收数据,那么参数必须用@RequestBody标识,并且参数类型必须为实体类或者Map集合。

	@RequestMapping(value = "/test1", method = RequestMethod.POST)
    @ResponseBody
    private String Test1(@RequestBody User user) {
        System.out.println(user);
        return "success";
    }

4.binary

相当于content-type:application/octet-stream,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章