在RestController中获取各种信息的方法

内容 获取方法
URL中路径的一部分 首先需要在RequestMapping做映射, 之后在方法中可以通过注解使用映射的变量
@GetMapping("/{id}")
public Student getStudent(@PathVariable("id") int id {}
可以写多个)
POST方法传递过来的Json 给参数前加个@RequestBody注解, Spring会自动把POST的Request Body部分的Json转成方法声明的类。如果转化失败会返回4xx错误,表示请求参数有问题。
public Student updateOne(@RequestBody Student student)
POST方法传递的是表单数据 首先需要声明传入的是application/x-www-form-urlencoded的格式,可在RequestMapping增加consumes参数:
@PostMapping(value="/students",consumes=MediaType.APPLICATION_FORM_URLECODED_VALUE)
在方法上增加参数,参数使用@RequestParam注解即可
public Object insert(@RequestParam(value="name", required=false) String name)
凡是可以通过HTTPServletRequest.getParameter(String)方法取到的值,包含表单提交的、QueryString附带的,都可以使用@RequestParam注解得到
默认request=true
QueryString的参数 使用@RequestParam注解, 通过参数获得, 例:
public Object query(@RequestParam(value="page", required=false)int page)
Request Header 可以使用@RequestHeader注解获取Request的头信息, 例:
public ResultJson editCompany(@RequestHeader("user-agent") String userAgent)
注意: @RequestHeader后面的头名字不区分大小写, 但@RequestParam, @PathVariable等是区分大小写的。
如果RequestHeader后面不写参数, 会用后面的变量名替代。
获取cookie值 使用@CookieValue注解,和其他类似,除非为了兼容老现有客户端,新API里不建议使用cookie。
获取当前的Request & Response 直接写参数, 例
public Object doSomething(HttpServletRequest request, HttpServletResponse response)
获取当前用户 直接在方法上增加参数类型, 类型为:
org.springframework.security.core.Authentication, 例:
public Student deleteStudent(Authentication auth)参数auth内会储存当前用户信息。
文件上传 首先要设置consumes为multipart/form-data
@PostMapping(value = "/files", consumes=MediaType.MULTIPART_FORM_DATA_VALUE)
在方法中写参数:
public Map<String, Object> uploadFile(@RequestParam("file")MultipartFile file)
在方法中就可以直接使用MultipartFile中的流保存文件了。

以上整理自网易云课堂的葛香东老师所授的课程

猜你喜欢

转载自www.cnblogs.com/zilongmao/p/10264995.html