常用的前端4种请求方式

这篇具有很好参考价值的文章主要介绍了常用的前端4种请求方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.GET请求:

第一种情形:

前端发送get请求,使用data方式传递参数。

export function empList(query){
  return request({
    url:'/emps/list',
    method:'get',
    data:query
  })
}

后端使用@GetMapping注解,不使用@RequestBody接收参数

@GetMapping("/list")
public Result listEmp(Emp emp){
       List<Emp> emps = empService.listEmp(emp);
       return Result.success(emps);
}
  • 这种方法实际接收不到前端传递来的参数,因为get请求参数传递不能是data,而应该是params。
  • 如果把后端接收参数方式改为@RequestBody,前端不作改动,则请求会报400错误(请求失败),后端报缺失需要的请求体,也就是需要Emp参数,但是前端并没有传送过来。
[org.springframework.http.converter.HttpMessageNotReadableException: Required request 
body is missing: public cn.cjc.pojo.Result
cn.cjc.controller.EmpController.list(cn.cjc.pojo.Emp)

结论:在获取数据,即查询数据库的时候,使用get请求方式,使用params的方式传递参数,或者使用url占位符的方式传递参数。不要在查询操作中使用post方法。

第二种情形:

前端发送get请求,不使用data方式传递参数。

export function selectById(id) {
  return request({
    url: '/emps/'+id,
    method: 'get',
  })
}

后端使用@GetMapping注解,使用@PathVariable接收参数

@GetMapping("/{id}")
public Result getById(@PathVariable Integer id){
       log.info("根据ID查询员工信息, id: {}",id);
       Emp emp = empService.getById(id);
       return Result.success(emp);
}

 结论:当前端发起GET请求时,若传递的是一个对象,则后端接收数据时,不需要用@RequestBody来转换JSON串,若传递的是一个具体的值或参数则后端必须用@PathVariable来接收。

二.POST请求

前端发送post请求,使用data方式传递参数

//POST请求,且传递的是一个对象
export function add(emp) {
  return request({
    url: '/emps',
    method: 'post',
    data: emp
  })
}

后端使用@PutMapping注解,使用@RequestBody接收参数

@PostMapping
public Result add(@RequestBody Emp emp){
       empService.add(emp);
       return Result.success();
}

结论: POST请求,一般用于新增或登录操作,通常传递为一个对象即一个JSON串,后端接收时必须使用@RequestBody注解来标识

三.PUT请求

前端发送put请求,使用data方式传递参数

export function update(emp) {
  return request({
    url: '/emps',
    method: 'put',
    data: emp
  })
}

后端使用@PutMapping注解,使用@RequestBody接收参数

@PutMapping
public Result update(@RequestBody Emp emp){
       empService.update(emp);
       return Result.success();
}
  • 如果前端使用data传递参数,后端不使用@RequestBody注解接收参数,则接收不到前端传递过来的参数(对象为null)。
  • 如果前端使用params传递参数,后端使用@RequestBody注解接收参数,则会报请求体缺失异常(请求体中需要Emp参数,但是没有)。
  • 如果前端使用params传递参数,后端不使用@RequestBody注解接收参数,是可以接收到前端传递过来的参数(对象为null)。
  • 虽然可以使用post代替put但是同样也不建议这样使用。

结论:当前端发起PUT请求时,若传递为一个对象即一个JSON串,则后端必须用@RequestBody注解进行标识;若传递参数为具体的值,后端接收时不需要任务注解进行标识。

四.DELETE请求

前端使用delete请求方式,URL中设置占位符参数

//传输单个参数
export function deleteById(id) {
  return request({
    url: '/depts/' + id,
    method: 'delete'
  })
}

后端使用@DeleteMapping注解,@PathVariable获取URL参数

  • 如果前端使用params传递参数,后端使用@RequestParam,则前端报400(请求失败),后端报缺少需要的参数错误;
  • 前端使用data传递参数,后端使用@RequestParam仍然不行,报相同的错误。
  • 使用post请求也可以完成delete的操作,但是不支持这样做。

结论:当前端发起DELETE请求时,传递的是一个具体的值或参数,后端接收参数必须用@PathVariable注解进行标识。

总结:主要针对于GET和POST请求:

1. GET拼接url,POST传递body,get限制字符串长度 
2. 请求缓存:GET 会被缓存,而post不会,原因是get是url的请求

3. 收藏书签:GET可以,而POST不能,原因是url可以收藏,

4. 保留浏览器历史记录:GET可以,而POST不能,原因是get的url请求
5. 用处:get常用于取回数据,post用于提交数据

6. 安全性:post比get安全,是因为post是请求体,不会在url上被劫持!

7. 请求参数:querystring是url的一部分get、post都可以带上。 
8. get的querystring仅支持urlencode编码,post的参数是放在body(支持多种编码) 
9. 请求参数长度限制:get请求限制字符串长度 ,post请求不限制字符串长度文章来源地址https://www.toymoban.com/news/detail-596436.html

到了这里,关于常用的前端4种请求方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言通过IXMLHTTPRequest以get或post方式发送http请求获取服务器文本或xml数据

    做过网页设计的人应该都知道ajax。 Ajax即Asynchronous Javascript And XML(异步的JavaScript和XML)。使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变的信息。 在IE浏览器中,Ajax技术就是

    2024年01月25日
    浏览(62)
  • 【Java】汇总Java中发送HTTP请求的7种方式

    今天在项目中发现一个功能模块是额外调用的外部服务,其采用CloseableHttpClient调用外部url中的接口…… CloseableHttpClient HTTP发送请求处理流程:

    2024年02月11日
    浏览(43)
  • 使用Go发送HTTP GET请求

    在Go语言中,我们可以使用 net/http 包来发送HTTP GET请求。以下是一个简单的示例,展示了如何使用Go发送HTTP GET请求并获取响应。 go 复制代码 package  main import  ( \\\"fmt\\\"   \\\"io/ioutil\\\"   \\\"net/http\\\"   ) func   main ()  { // 创建一个HTTP客户端 client := http.Client{} // 创建一个GET请求 req, err :=

    2024年01月23日
    浏览(45)
  • get方式发送请求出现跨域问题

    Access to XMLHttpRequest at \\\'http://localhost:8090/concern?pageSize=10pageNum=1param[deviceWorkspace]=param[userAccount]=%22190013129%22\\\' from origin \\\'http://localhost:8080\\\' has been blocked by CORS policy: No \\\'Access-Control-Allow-Origin\\\' header is present on the requested resource. 但同伴说他已经在后端对跨域问题进行处理了。这里可以考

    2024年02月16日
    浏览(41)
  • 使用C#发送HTTP的Get和Post请求

    2024年02月07日
    浏览(58)
  • 前端 axios 通过 get 请求发送 json 数据

    先说结论: axios 不能通过 get 请求发送 json 数据 使用 postman 可以做到通过 get 请求发送 json 数据 但是通过 axios 框架就不行, 主要是因为axios是对ajax的一个封装。他本身不支持get请求在body体传参。 原生和jquery的ajax是支持的。建议跟后端沟通,你把json拼在url后面,后端从url的

    2024年02月11日
    浏览(56)
  • java发送http请求的几种方式,调用第三方接口的方法:HttpUtil、HttpURLConnection等

    参考:https://blog.csdn.net/yubin1285570923/article/details/126225347 put请求 post带请求头 get、delete类似… 使用JDK原生提供的net,无需其他jar包,代码如下: 需要用到commons-httpclient-3.1.jar,maven依赖如下: 看一下我实际应用的例子 需要用到httpclient-4.5.6.jar,maven依赖如下: RestTemplate 是由

    2024年01月18日
    浏览(54)
  • 使用bash脚本在Linux中发送HTTP GET请求

    在Linux中,使用bash脚本发送HTTP GET请求是一种常见的自动化任务。下面是一个简单的bash脚本示例,用于发送HTTP GET请求并处理响应: bash 复制代码 #!/bin/bash # 定义URL url= \\\"http://example.com\\\"   # 发送GET请求并获取响应 response=$(curl -s \\\" $url \\\" ) # 检查响应状态码 if  [ $? -eq 0 ]; then   e

    2024年01月22日
    浏览(57)
  • python requests.get发送Http请求响应结果乱码、Postman请求结果正常

    最近在写爬虫程序,自己复制网页http请求的url、头部,使用python requests和postman分别请求,结果使用postman发送http get请求,可以得到正常的json数据,但是使用python的requests发送则接受到乱码,response.text的内容是: response.content的内容是: 十分费解,于是网上搜索了相关内容,

    2024年01月24日
    浏览(58)
  • 【Golang 接口自动化01】使用标准库net/http发送Get请求

    目录 发送Get请求 响应信息 拓展  资料获取方法 使用Golang发送get请求很容易,我们还是使用 http://httpbin.org 作为服务端来进行演示。 更多的响应内容我们查看安装路径的net包中Response struct 的信息,里面有详细的注释,参考路径: C:Gosrcnethttpresponse.go : 用过Python的同学都知

    2024年02月14日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包