1. 程式人生 > >在RestController中獲取各種資訊的方法

在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中的流儲存檔案了。

以上整理自網易雲課堂的葛香東老師所授的課程