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