前端在请求接口的时候要和后端人员配合好,根据后端提供的接口文档来进行开发,一般请求类型有这几种

1.GET请求

  • GET请求一般会将数据放到URL后
  • GET请求对所发信息量的限制是2000个字符
  • GET请求的参数只能是ASCII码,所以中文需要URL编码
  • GET请求用于提交非敏感数据和小数据

前端在使用GET请求的时候一般是为了查询数据等操作,这时会把参数放在地址栏后面一起传过去所以请求头如果对token等没有特殊要求的情况下一般是不用设置的

例如:

// 查询课时列表方法
export function getClassHour (params) {
return request({
url: API.classHourList,
method: 'get',
params
})
}
// 获取课时列表
const params = {
curricid: this.queryParam.curricid,
pageNow: this.queryParam.pageNow,
pageSize: this.queryParam.pageSize
} getClassHour(params).then(res => {
//获取数据后的操作
}
)

而最终请求的效果是这样的

2.POST请求

  • POST请求会将数据放到请求体中
  • POST请求对信息量没有限制
  • POST请求传参没有数据编码这个限制
  • POST请求用于提交敏感数据和大数据

前端在使用POST请求的时候一般是为了传输敏感数据参数,所以不会放在地址栏后面。

在使用POST请求的时候要和后端人员配合好,根据后端所要求的格式来传输参数,不同的格式有不同的请求头设置。

  1、json字符串:application/json//axios的默认的数据类型

  类似这种POST请求一般是传json字符串然后请求头设置为application/json

  例如:

//在拦截器设置请求头
config.headers['Content-Type'] = 'application/json'
// 新增课程
export function addClass (data) {
return request({
url: API.addClass,
method: 'post',
data: data
})
}
//新增课程操作
//this.form是参数
addClass(this.form).then(response => {
this.$message.success(
'新增成功',
3
)
}).catch(err => {
console.log(err)this.$message.error('错误')
})

实际请求效果如下:

可以发现 参数是以对象的格式发送的

  2、表单(键值对类型):application/x-www-form-urlencoded

  类似这种POST请求一般是传表单然后请求头设置为application/x-www-form-urlencoded

用Qs.stringify()将对象序列化成URL的形式,Qs是axios里面自带的,所以直接引入就可以了

  例如

  //在拦截器设置请求头
  config.headers['Content-Type'] = 'multipart/form-data'
service.post(url, qs.stringify(data, {arrayFormat: 'indices', allowDots: true}))
.then((res) => {
if (res) {
console.log(res)
resolve(res.data)
} else {
resolve(res)
}
})
.catch((err) => {
reject(err)
})
//data为参数

实际请求效果如下:

以上就是前端GET请求和POST请求基本的类型

为何要设置请求头里的'Content-Type':

我们使用不同请求方式时,参数的传输方式是不一样的,但是服务端在取我们接口的请求参数时,用的方法其实却是一样的,都是使用request.getParameter(key)来获取,其实是因为tomcat在中间会对请求参数进行解析处理,处理完把解析出来的表单参数放在request parameter map中,所以后端就可以通过request.getParameter(key)来统一获取数据,而tomcat解析的时候是怎么知道当前的请求是post请求的呢,就是通过'contentType',当'contentType'为"application/x-www-form-urlencoded",它才会去读取请求体数据。

为何要用Qs.stringify()将对象序列化成URL的形式:

在最开始的时候我们说了,post请求参数是以键值对的形式存在请求体里,用Qs.stringify()就是把传入的对象转换为键值对。

最后在vue里用axios的时候,针对post请求的问题可以做一个全局的设置,避免每个请求都要设置一遍太麻烦

总的来说

  前端在平时开发中要严格按照接口文档需要传的参数格式和字段来和后端进行配合,如果发现有什么不合理的地方要及时跟后端同事进行沟通,不要不敢说,不然最后卡住的会是自己,如果不确认自己写的是否正确而后端同事说接口没有问题的时候可以在Postman进行接口测试,如果确实是可以用的说明是自己写的代码有问题,这时候仔细把请求头和格式对比清楚就可以了。

前端常见的请求数据汇总(GET POST)的更多相关文章

  1. 前端向服务器请求数据并渲染的方式(ajax/jQuery/axios/vue)

    原理: jQuery的ajax请求:complete函数一般无论服务器有无数据返回都会显示(成功或者失败都显示数据): return result

  2. 前端缓存API请求数据

    1. 背景 在一些项目中,有时候会出现不同模块重复请求大量相同api接口的情况,特别是在一些功能相似的后台管理页面中.以下面这几个页面为例,每次进入页面都需要请求等大量重复的下拉框数据,下拉框数据短时 ...

  3. idea模拟前端向后台请求数据输出响应结果

    tools-httpClient-Test restful web service 通过上述步骤之后出现如下图 1 表示通过哪种方式请求:2 请求数据的地址头部:3 请求数据的除了头部之后的地址:4, ...

  4. python后端从数据库请求数据给到前端的具体实现

    先来贴一窜代码让大家理解前端/后端/数据库的工作原理, 首先简要说明:前端向后端请求数据,后端根据前端请求数据的类别分析其需求,并连接到数据库获取相应数据: 来一段简单的实例代码模拟淘宝商城: 前端代 ...

  5. Python实现接口测试中的常见四种Post请求数据

    前情: 在日常的接口测试工作中,模拟接口请求通常有两种方法, 利用工具来模拟,比如fiddler,postman,poster,soapUI等 利用代码来模拟,使用到一些网络模块,比如HttpClie ...

  6. 常见.NET功能代码汇总 (2)

    常见.NET功能代码汇总 23,获取和设置分级缓存 获取缓存:首先从本地缓存获取,如果没有,再去读取分布式缓存写缓存:同时写本地缓存和分布式缓存 private static T GetGradeCa ...

  7. vue实践---vue配合express实现请求数据mock

    mock数据是前端比较常见的技术,这里介绍下vue配合express 实现请求数据mock. 第一步: 安装 express :  npm install express -D 第二步: 简历需要mo ...

  8. 通过AngularJS实现前端与后台的数据对接(二)——服务(service,$http)篇

    什么是服务? 服务提供了一种能在应用的整个生命周期内保持数据的方法,它能够在控制器之间进行通信,并且能保证数据的一致性. 服务是一个单例对象,在每个应用中只会被实例化一次(被$injector实例化) ...

  9. 通过AngularJS实现前端与后台的数据对接(一)——预备工作篇

    最近,笔者在做一个项目:使用AngularJS,从而实现前端与后台的数据对接.笔者这是第一次做前端与后台的数据对接的工作,因此遇到了许多问题.笔者在这些问题中,总结了一些如何实现前端与后台的数据对接的 ...

随机推荐

  1. Flutter CLI commands All In One

    Flutter CLI commands All In One Flutter run key commands. r Hot reload. R Hot restart. h Repeat this ...

  2. shit instagram

    shit instagram 无法登录 我们检测到了可疑登录操作 为保护帐户安全,请获取登录帮助. email 无法验证 x*****s@e*****.com xgqfrms@example.com ...

  3. node.js 中间件

    node.js 中间件 node.js middleware Express middleware body-parser cookie-parser cookie-session cors csur ...

  4. bili & library bundler

    bili & library bundler https://bili.egoist.sh/#/#quick-start # Node.js 8 or above: $ npm i -D bi ...

  5. js binary search algorithm

    js binary search algorithm js 二分查找算法 二分查找, 前置条件 存储在数组中 有序排列 理想条件: 数组是递增排列,数组中的元素互不相同; 重排 & 去重 顺序 ...

  6. CSS BEM

    CSS BEM Block, Element, Modifier https://en.bem.info/methodology/quick-start/ BEM /* Block component ...

  7. Flutter: MediaQuery

    Flutter Widget of the Week 使用MediaQuery根据不同的屏幕大小调整应用程序的UI布局. 您还可以使用它根据用户布局首选项进行UI调整. class _MyHomeSt ...

  8. 聊聊ASP.NET Core中的配置

    ​作为软件开发人员,我们当然喜欢一些可配置选项,尤其是当它允许我们改变应用程序的行为而无需修改或编译我们的应用程序时.无论你是使用新的还是旧的.NET时,可能希望利用json文件的配置.在这篇文章中, ...

  9. @RestController和@Controller

    1.使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面 若返回json等内容到页面,则需要加@ResponseBody注解 2 ...

  10. Android获取OneNET云平台数据

    尝试HttpURLConnection "get"方式获取了www.baidu.com的数据后,试着获取OneNET云平台的设备数据(设备数据已成功上传至云平台) .java文件 ...