可以安装一个postman ,上边可以灵活的选择请求方式,content-type类型,参数类型等 发送求情
前台部分关心的:
Ajax或者vue中的axios等,大部分请求都是按照表单的形式发送的,表单content-type有两种:
application/x-www-form-urlencoded: 表单的默认形式,大多数发送请求工具默认的形式,用的最多的,不管get/post ,这时候参数都会被转化键值对的形式,后台直接写参数,或者实体,不要用@RequestBody ITaskQueryVo
multipart/form-data :上边那种只能传递字符串,这种既可以传递多个文件,又可以传递多个字符串参数,对于参数后台还是和上边一样,直接写参数,或者直接写实体,不要用@RequestBody ITaskQueryVo ,对于文件后台通过resquest就可拿到
let formData = new FormData();
formData.append("itemName", "小明");
formData.append("updateType", 0);
//文件 先判断上传组件有文件
if (this.fileList[0]) {
//file 是随便起的,后台不用这个,值就是组件拿到的文件
formData.append("file", this.fileList[0].raw);
}
//发送请求
let config = {
headers: {
"Content-Type": "multipart/form-data"
}
};
this.loading = true;
this.$http.post("/task/save", formData, config)
content-type 为application/json 时
这种前台传可以把content-type 类型设置为application/json ,参数写的时候还是json格式(该咋写就咋写,和平时一样),不管get还是post都行,但最终参数不再是转化为键值对,而是以raw得方式发给后台,后台参数必须使用@RequestBody 参数,
@RequestBody 实体,来接受;或者从request的输入流inputstream中拿去
httpclient 发送的就是把json参数 按照application/json 发送的,接收端要从request输入流中拿去
content-type 为二进制 时
只能传递文件,不能同时传递文件+字符串参数,这点还不如表单的第二种形式,后台从request中拿去就行