内容 | 获取方法 |
---|---|
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中的流保存文件了。 |