当前位置: 首页 > news >正文

HTTP四大参数类型及请求参数的方式和如何接收

HTTP 请求中4大参数类型和接收方法。

1、请求头参数head

请求头参数顾名思义,是存放在请求头中发送给服务器的参数,服务器通过解析请求头获取参数内容。通常会存放本次请求的基本设置,以帮助服务器理解并解析本次请求的body体。 参数形式如:

Accept-Language : zh-CN,zh;q=0.8,zh-TW;q=0.5,en-US;q=0.3,en;q=0.2

在我们的SpringBoot中,通过@RequestHeader注解可以获取到。
Spring Boot 读取http headers内容

2、路径参数path

路径参数顾名思义,本次请求的资源路径,紧跟请求域名的后面,服务器通过解析路径参数获取资源位置。路径参数是用/分隔的一系列字符串,其意义在于对服务器资源进行统一定位,如:
在这里插入图片描述

SpringBoot接收:
@PathVariabel注解的形参名字要与路径参数形参名字相等
不相等就用 value值来与路径参数名字相等。
在这里插入图片描述

3、查询参数query

Query代表请求的参数,URL以?key=value的形式呈现,例如:
http://localhost:8080/api/v1/namespaces?pretty=true 中 pretty=true就是query

SpringBoot接收
在这里插入图片描述

get请求只能传query参数,query参数都是拼接在请求地址上的。

4、请求体参数body

请求体参数顾名思义,是存放在请求体(在HTTP协议中用于传输客户端向服务器发送的数据的部分)中发送给服务器的参数。请求体参数格式复杂多变,服务器会先根据请求头中的 Content-Type 获取其格式,然后再根据其格式进行解析,常见的格式如下:
在这里插入图片描述

Get请求只能传Query参数,POST可以传Query和Body(常用)两种形式的参数。
Query的值只能是一个字符串,不能传递对象类型的参数,如果参数中涉及到了传递对象,就要选择Body传参,一般json等都是Body传参

SpringBoot接收
使用注解@RequestBody,接收json数据
在这里插入图片描述

关于接收参数三个注解的区别

@RequestBody、@RequestParam、@PathVariable

- 区别

  1. @RequestParam用于接收url地址传参或表单传参
  2. @RequestBody用于接收json数据
  3. @PathVariable用于接收路径参数,使用{参数名称}描述路径参数

- 应用

  1. 后期开发中,发送请求参数超过1个时,以json格式为主,@RequestBody应用较广
  2. 如果发送非json格式数据,选用@RequestParam接收请求参数
  3. 采用RESTful进行开发,当参数数量较少时,例如1个,可以采用@PathVariable接收请求路径变量,通常用于传递id值

@RequestBody的详细使用
@RequestBody的使用
学习来自
https://juejin.cn/post/7291466545305829376#heading-8

相关文章:

  • Kubernetes 离线部署 Spinnaker
  • webSocket基于面向对象二次封装
  • C语言-字符串逆序
  • 芯片设计—低功耗isolation cell
  • householder进行矩阵QR分解
  • Anaconda深度学习环境配置命令参考
  • 人工智能对我们的生活影响有多大
  • 【Spring】SpringBoot的扩展点之ApplicationContextInitializer
  • python-冒泡排序
  • Golang基础-面向对象篇
  • 1.2.1 C语言结构体初始化方法总结
  • Nginx 开源版安装
  • 下一代ETL工具:微服务架构的全新数据集成平台
  • stm32定时器输入捕获模式
  • 外部中断为什么会误触发?
  • 【刷算法】从上往下打印二叉树
  • angular2开源库收集
  • go语言学习初探(一)
  • JavaScript服务器推送技术之 WebSocket
  • js数组之filter
  • passportjs 源码分析
  • python 装饰器(一)
  • react-native 安卓真机环境搭建
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • Vue.js源码(2):初探List Rendering
  • 分布式事物理论与实践
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 前端自动化解决方案
  • 使用parted解决大于2T的磁盘分区
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • ​学习一下,什么是预包装食品?​
  • # 达梦数据库知识点
  • (1)STL算法之遍历容器
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (4.10~4.16)
  • (C语言)共用体union的用法举例
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)Oracle 9i 数据库设计指引全集(1)
  • .md即markdown文件的基本常用编写语法
  • .net mvc部分视图
  • .Net6使用WebSocket与前端进行通信
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • @property @synthesize @dynamic 及相关属性作用探究
  • @requestBody写与不写的情况
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [autojs]逍遥模拟器和vscode对接
  • [BUG]Datax写入数据到psql报不能序列化特殊字符
  • [BZOJ2281][SDOI2011]黑白棋(K-Nim博弈)