http请求方式-与springmvc注解-与前端调用.

第一http请求方式

Content-Type 的值类型:

1.1  application/json:消息主体是序列化后的 JSON 字符串。

1.2  application/x-www-form-urlencoded:数据被编码为键值对。

1.3  multipart/form-data: 需要在表单中进行文件上传时,就需要使用该格式。

1.4  text/plain:数据以纯文本形式(text/json/xml/html)进行编码,其中不含任何控件或格式字符。

第二springmvc注解(常见使用方式)

2.1 类上注解@RestController和@Controller区别

@RestController注解相当于@ResponseBody + @Controller合在一起的作用。

如果需要返回JSON,用@RestController

如果返回jsp或者html,用@Controller

2.2 方法注解@PostMapping和GetMapping以及@RequestMapping(是@PostMapping和GetMapping的父类)

(PutMapping,DeleteMapping,PatchMapping不常用不做讨论)

2.3 方法参数注解@RequestBody,@ModelAttribute,@RequestParam,@PathVariable,@RequestPart

第三springmvc注解对应的http请求方式

@PostMapping情况下

a @RequestBody ->对应application/json 入参是javabean

b @ModelAttribute ->对应x-www-form-urlencoded 入参是javabean ->用户文件上传

c @RequestParam -> 对应application/x-www-form-urlencoded 或者 multipart/form-data  ->入参是对应字段 eg:@RequestParam(name = "username", required = true  没传的话会报错404

d @RequestPart 和 @RequestParam 区别:

当请求头中指定Content-Type:multipart/form-data时,传递的json参数,@RequestPart注解可以用对象来接收,@RequestParam只能用字符串接收


post请求用ab两种情况就好,用bean做入参好维护,好做jsr校验.

@GetMapping情况下

a @RequestBody ->入参是javabean

一般的情况下,GET请求是不可以用@RequestBody来接收参数的。 因为浏览器发起get请求,请求体是空的.

而上层服务调用,参数写入请求体是可以的.

b @ModelAttribute->入参是javabean,可做参数校验 前端拼接url?xxId=xx

c @PathVariable

eg:path="file/down/{fileId}"  @PathVariable(name="fileId", required=true) String fileId

前端拼接url= xxx/file/download/fileId

你可能感兴趣的:(http请求方式-与springmvc注解-与前端调用.)