HTTP请求与接收 application/x-www-form-urlencoded即application/x-www-from-urlencoded,将表单内的数据转换为Key-Value。 POST 提交数据的方式了。浏览器的原生 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。 首先,Content-Type 被指定为 application/x-www-form-urlencoded;其次,提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。大部分服务端语言都对这种方式很好的支持,常用的如jQuery中的ajax请求,Content-Type 默认值都是application/x-www-form-urlencoded;charset=utf-8 x-www-form-urlencoded:只能上传键值对,而且键值对都是通过&间隔分开的 multipart/form-datapost请求方式,一般用来上传文件,各大服务器的支持也比较好。所以我们使用表单 上传文件时,必须让表单的enctype属性值为 multipart/form-data form-data对应的是页以form表单提交传值的情形 等价于http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来表名文件类型;content-disposition,用来说明字段的一些信息;由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件 浏览器原生支持的 multipart/form-data:可以上传文件或者键值对,最后都会转化为一条消息 application/jsonapplication/json作为响应头并不陌生,实际上,现在很多时候也把它作为请求头,用来告诉服务端消息主体是序列化的JSON字符串,除了低版本的IE,基本都支持。除了低版本的IE都支持JSON.stringify()的方法,服务端也有处理JSON的函数,使用json不会有任何麻烦。 rawraw对应的是入参是任意格式的可以上传任意格式的【文本】,可以上传text、json、xml、html等 @RequestParam@RequestParam用来处理 Content-Type 为 application/x-www-form-urlencoded 编码的内容,Content-Type默认为该属性。@RequestParam也可用于其它类型的请求,例如:POST、DELETE等请求。 所以在postman中,要选择body的类型为 x-www-form-urlencoded,这样在headers中就自动变为了 Content-Type : application/x-www-form-urlencoded 编码格式。但是这样不支持批量插入数据啊,如果改用 json 字符串来传值的话,类型设置为 application/json,点击发送的话,会报错,后台接收不到值,为 null。 (@RequestParam Map map) application/json时候,json字符串部分不可用,url中的?后面添加参数即可用,form-data、x-www-form-urlencoded时候可用,但是要将Headers里的Content-Type删掉 (@RequestParam String waterEleId,@RequestParam String enterpriseName)application/json时候,json字符串部分不可用,url中的?后面添加参数即可用form-data、x-www-form-urlencoded时候可用,且参数可以没有顺序(即前端传过来的参数或者url中的参数顺序不必和后台接口中的参数顺序一致,只要字段名相同就可以),但是要将Headers里的Content-Type删掉 (@RequestParam Object object) 不管application/json、form-data、x-www-form-urlencoded都不可用 @RequestBody注解@RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非 Content-Type: application/x-www-form-urlencoded编码格式的数据,比如:application/json、application/xml等类型的数据。 就application/json类型的数据而言,使用注解@RequestBody可以将body里面所有的json数据传到后端,后端再进行解析。 GET请求中,因为没有HttpEntity,所以@RequestBody并不适用。 POST请求中,通过HttpEntity传递的参数,必须要在请求头中声明数据的类型Content-Type,SpringMVC通过使用 (@RequestBody Map map) (@RequestBody Object object) application/json时 可用 form-data、x-www-form-urlencoded时候不可用 既不是@RequestBody也不是@RequestParam,没有指定参数哪种接收方式 (Map map)(Object object)application/json时候:json字符串部分不可用,url中的?后面添加参数不可用。因为没有指定,它也不知道到底是用json字符串部分还是?后面添加参数部分,所以干脆都不可以用form-data、x-www-form-urlencoded时都不可用 (HttpServletRequest request)application/json不可用form-data、x-www-form-urlencoded时可用 @PathVariable接收请求路径中占位符的值,@PathVariable 注解可以将 URL 中占位符参数绑定到控制器处理方法的入参中;URL 中的 {xxx} 占位符可以通过 @PathVariable(“xxx“) 绑定到操作方法的入参中。 #HTTP HTTP请求与接收 https://github.com/i-xiaoxin/2023/03/13/请求方式与接收/ 作者 xiaoxinlore 发布于 2023年3月13日 许可协议 LocalDateTime今天昨天判断 上一篇 Java数据脱敏工具类 下一篇 Please enable JavaScript to view the comments