广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >POST请求和GET请求怎么传递和接收解析参数
  • 415
分享到

POST请求和GET请求怎么传递和接收解析参数

2024-04-02 19:04:59 415人浏览 八月长安
摘要

本篇内容介绍了“POST请求和GET请求怎么传递和接收解析参数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成

本篇内容介绍了“POST请求和GET请求怎么传递和接收解析参数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

 1. 前言

接口参数应该怎么传递是每个项目应该面对的问题,这跟编程语言无关,今天来总结一波常用的接口参数传递方式。

2. GET 请求

GET 请求一般用来向服务器请求获取数据。总体来说目前有两种传参风格类型。

多参数拼接

这是我们最常见的传递方式,它一般传参方式如下:

GET /api/v1/user?name=felord.cn&age=18 Http/1.1 Host: localhost:8080

规则为:参数和 URI 之间用问号?隔开,  参数键值用等号=连接,然后参数之间用连接符&拼接起来,如样例中的name=felord.cn&age=18。在 spring mvc  中这种参数可以被对象接收:

@GetMapping("/user") public Rest<?> urlEncode(User params) {     // params.name = felord.cn     // params.age = 18     return RestBody.okData(params); }

通过httpservletRequest#getParameter(String key)也获取上述方式携带的参数,但是一般这种方式建议在 Servlet  Filter 过滤器使用,而不建议在接口中使用。Spring MVC  拦截器获取参数的底层也是该方式实现的。但是我也发现很多人在接口中使用此不合理的方式。

另外 URL 的长度是有限制的,如果 GET 请求包含了过于复杂的参数组合,说明业务设计是有问题的。

路径标识参数

还有一种方式就是路径参数,这种参数是期望获取数据的标识,一般为数据的唯一标识或者分页参数。例如查询标识为1的用户:

GET /api/v1/user/1 HTTP/1.1 Host: localhost:8080

查询第1页(每页10条)的用户:

GET /api/v1/users/1/10 HTTP/1.1 Host: localhost:8080

在 Spring MVC 中这种参数需要通过@PathVariable来处理:

@GetMapping("/user/{userId}") public Rest<?> urlEncode(@PathVariable("userId") String userId) {     return RestBody.okData(userId); }

DELETE 请求也推荐使用路径参数

3. POST/PUT 请求

GET 请求是从服务端获取数据的,而 POST 请求则是向服务端发送数据。很多不清楚它们之间区别的同学会混用它们。我见过使用 GET  请求修改数据的,也见过使用 POST 请求来查询结果的。虽然它们可以完成期望的工作但是它们之间还是有很大的差别的,这里不得不重复一下:

  • GET 请求可以直接在浏览器直接请求当然也会保留在浏览器历史记录里,而 POST 不可以。

  • GET 请求是天然幂等性的,而 POST 不是。

  • GET 请求会被浏览器主动缓存,而 POST 不会,除非手动设置。

  • GET 请求只能进行 URI 编码,而 POST 支持多种编码方式。

  • 对参数的数据类型,GET 只接受 ASCII 字符,而 POST 没有限制。

  • GET 比 POST 更不安全,因为参数直接暴露在 URL 上,所以不能用来传递敏感信息。

  • GET 参数通过 URL 传递,而且是有长度限制的,POST 放在请求体中,没有长度限制。

GET 请求会把请求头和 DATA 一并发送出去,然后服务器响应;而对于 POST 请求会先发送请求头告诉服务器请求的编码方式等等,然后服务器响应 100  continue 后客户端再把编码后的 DATA 发送给服务器,由服务器作出响应。另外如果不使用 HTTPS,POST 请求也无法保证数据的安全传输。

表单提交

POST 请求最长使用的场景是表单提交,比如登录:

<fORM action="/login" method="POST">     First name: <input type="text" name="username"><br>     Last name: <input type="passWord" name="password"><br>   <input type="submit" value="登录"> </form>

这种方式是 POST 的默认方式,Content-Type为application/x-www-form-urlencoded。样例如下:

POST /login HTTP/1.1 Host: localhost:8080 Content-Type: application/x-www-form-urlencoded  username=felord.cn&password=felord.cn

参数的组织方式参考 GET 请求,但是不是放在 URL  中而是放在请求体中,另外必须显式声明Content-Type为application/x-www-form-urlencoded。Spring MVC  中我们可以直接使用对象来接收:

@PostMapping("/login") public Rest<?> doLogin(LoginDTO params) {     // params.username = felord.cn     // params.password = felord.cn     return RestBody.okData(params); }

上面的登录也可以使用multipart/form-data方式来请求:

POST /login HTTP/1.1 Host: localhost:8080 Content-Type: multipart/form-data; boundary=----WEBKitFormBoundary7MA4YWxkTrZu0gW  ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="username"  felord.cn ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="password"  felord.cn ----WebKitFormBoundary7MA4YWxkTrZu0gW

multipart/form-data将表单中的每个input转为了一个由boundary分割的小格式,没有转码,直接将 UTF-8  字节拼接到请求体中,在本地有多少字节实际就发送多少字节,极大提高了效率,适合传输长字节,通常我们用来上传文件等大字节。例如我们将路径C:/Users/felord/Desktop/spring-security.pdf文件以myFile为标识名上传到服务器:

POST /foo/upload HTTP/1.1 Host: localhost:8080 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW  ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="myFile"; filename="/C:/Users/felord/Desktop/spring-security.pdf" Content-Type: application/pdf  (data) ----WebKitFormBoundary7MA4YWxkTrZu0gW

对应的 Spring MVC 接口为:

@PostMapping("/upload")  public Rest<?> urlEncode(@RequestPart("myFile") MultipartFile file) {      String originalFilename = file.getOriginalFilename();      return RestBody.okData(originalFilename);  }

请注意 Spring MVC 文件大小默认是10485760bytes。

Ajax POST 请求

目前大部分都是前后端分离了,所以除了上传之外的 POST  请求更多建议将数据使用JSON的形式提交给服务器。当我们需要新增一个name为felord、age为18的User时建议这么做:

POST /user/add HTTP/1.1 Host: localhost:8080 Content-Type: application/json  {     "name": "felord",     "age": 18 }

将参数封装为JSON并放入请求体提交给后端。

@PostMapping("/user/add") public Rest<?> add(@RequestBody User user) {     return RestBody.okData(user); }

“POST请求和GET请求怎么传递和接收解析参数”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: POST请求和GET请求怎么传递和接收解析参数

本文链接: https://www.lsjlt.com/news/75453.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • POST请求和GET请求怎么传递和接收解析参数
    本篇内容介绍了“POST请求和GET请求怎么传递和接收解析参数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2022-10-19
  • golang接收post和get请求参数处理
    目录1、golang中获取请求接口中数据(GET)方式一: API参数 ctx.Param(name string)或者ctx.Params.ByName(name string)方...
    99+
    2023-03-08
    golang post和get请求 golang post get
  • golang接收post和get请求参数如何处理
    这篇文章主要讲解了“golang接收post和get请求参数如何处理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“golang接收post和get请求参数如何处理”吧!1、golang中获取...
    99+
    2023-07-05
  • Axios get post请求传递参数的实现代码
    目录Axios概述 一、 安装三、 axiosAPI四、请求配置五、响应内容六、默认配置七、拦截器八、错误处理九、取消Axios概述  首先,axios是基于pr...
    99+
    2022-11-13
    axios get post请求传递参数 axios get post请求 axios传递参数
  • NodeJS中怎么收发GET和POST请求
    NodeJS中怎么收发GET和POST请求,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一 express框架接收app.get('...
    99+
    2022-10-19
  • JavaScript中怎么接收get请求参数
    这期内容当中小编将会给大家带来有关JavaScript中怎么接收get请求参数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.首先想到正则function g...
    99+
    2022-10-19
  • SpringBoot怎么用实体接收Get请求传递过来的多个参数
    这篇文章主要介绍了SpringBoot怎么用实体接收Get请求传递过来的多个参数的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot怎么用实体接收Get请求传递过来的多个参数文章都会有所收获,下面...
    99+
    2023-06-30
  • Vue请求怎么传递参数
    本篇内容介绍了“Vue请求怎么传递参数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、get请求get请求没有请求体,传递的参数是添加到u...
    99+
    2023-07-05
  • RestTemplate怎么调用POST和GET请求
    本文小编为大家详细介绍“RestTemplate怎么调用POST和GET请求”,内容详细,步骤清晰,细节处理妥当,希望这篇“RestTemplate怎么调用POST和GET请求”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-07-05
  • SpringBoot请求参数传递与接收说明小结
    目录一、GET请求和POST请求的区别是什么二、不同类型参数传递方法1、单个基本数据类型参数传递2、多个参数传递3、数组4、请求头参数以及Cookie一、GET请求和POST请求的区...
    99+
    2022-12-19
    SpringBoot请求参数传递 SpringBoot请求参数接收
  • Filter中获取传递参数方式(解决post请求参数问题)
    目录Filter中获取传递参数1.GET传递2.Post传递XyRequestWrapper类XySecurityFilterFilter中获取传递参数 1. GET 传递 参数可以...
    99+
    2022-11-12
  • axios gin的GET和POST请求怎么实现
    今天小编给大家分享一下axios gin的GET和POST请求怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧...
    99+
    2023-06-30
  • axios发送post请求springMVC接收不到参数怎么办
    小编给大家分享一下axios发送post请求springMVC接收不到参数怎么办,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!axios发送post请求时,出现了参数后台接收不到的情况,分...
    99+
    2022-10-19
  • Spring MVC怎么实现GET请求接收Date类型参数
    这篇“Spring MVC怎么实现GET请求接收Date类型参数”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Sp...
    99+
    2023-07-02
  • PHP怎么使用cURL实现Get和Post请求
    使用cURL库可以轻松地实现GET和POST请求。GET请求:```php// 创建一个cURL资源$curl = curl_ini...
    99+
    2023-08-16
    PHP
  • SpringBoot用实体接收Get请求传递过来的多个参数的两种方式
    目录一、Controller层不带任何注解接收参数二、Controller层通过@ModelAttribute接收参数最近项目中Controller层查询接口需要通过实体来接受前端传...
    99+
    2022-11-13
  • uniapp怎么请求传递和获取数据
    在UniApp中,可以使用uni.request方法发送HTTP请求来请求传递和获取数据。 发送请求: uni.request({ ...
    99+
    2023-10-22
    uniapp
  • python的requests库get和post参数怎么传递
    这篇文章主要介绍了python的requests库get和post参数怎么传递的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python的requests库get和post参数...
    99+
    2022-10-19
  • Struts2之Action接收请求参数和拦截器详解
    技术分析之在Struts2框架中使用Servlet的API1. 在Action类中也可以获取到Servlet一些常用的API需求:提供JSP的表单页面的数据,在Action中使用Servlet的API接收到,然后保存到三个域对象中,最后再显...
    99+
    2023-05-31
    struts 拦截 action
  • 解读SpringBoot接收List<Bean>参数问题(POST请求方式)
    目录接收List<Bean>参数问题(POST请求方式)springboot接口参数为List简单接口参数设置headers组织传值参数list数据代码实现请求contr...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作