請求

特定 HTTP 方法

@GetMapping / @PostMapping / @PutMapping / @DeleteMapping / @PatchMapping

即為 @RequestMapping(method=HttpMethod.XXX),HttpMethod 為提供的列舉

URI 模式

字符

描述

範例

?

配對一個字元

---- "/pages/t?st.html" ---- /pages/test.html ; /pages/t3st.html

*

配對路徑中的零到多個字串

---- "/resources/*.png" ----

/resources/file.png

---- "/projects/*/versions" ----

/projects/spring/versions

**

配對路徑中的零到多個 字串,直到路徑結束

---- "/resources/**" ---- /resources/file.png ; /resources/images/file.png

{name}

配對路徑中 key value 關係,搭@PathVariable

---- "/projects/{project}/versions" ----

/projects/spring/versions,

為 project = spring

{name:正則表達式}

即配對其指定正則

---- "/projects/{project:[a-z]+}/versions" ----

/projects/spring/versions

可接受的媒體類型

consumes,即為請求的 Content-Type ,可透過 MediaType 列舉使用。

且還支持否定表達式,表示以外的內容,如下:

@Requestmapping(value="/",consumes=!MediaType.APPLICATION_JSON_VALUE)

若類別有 @RequestMapping 有設置,方法層級的將會覆蓋。

可生產的請求類型

produces,即為請求的 Accept 標頭,可透過 MediaType 列舉使用。

且還支持否定表達式,表示以外的內容,如下:

@Requestmapping(value="/",produces=!MediaType.APPLICATION_JSON_VALUE)

若類別有 @RequestMapping 有設置,方法層級的將會覆蓋。

處理方式

方法參數 / 返回值 / 類型轉換 / queryString 的矩陣變量 / 轉導 / Session / Cookie / 檔案 等等。

例外處理 - AOP

Core - AOP

@Controller@ControllerAdvice 可以使用 @ExceptionHandler 捕捉異常的例外。

其他替代方案

明確註冊

@Configuration
public class MyConfig {

    @Autowired
    public void setHandlerMapping(
    // (1)
        RequestMappingHandlerMapping mapping, UserHandler handler) 
            throws NoSuchMethodException { 
        // (2)
        RequestMappingInfo info = RequestMappingInfo
                .paths("/user/{id}").methods(RequestMethod.GET).build(); 
        // (3)
        Method method = UserHandler.class.getMethod("getUser", Long.class); 
        // (4)
        mapping.registerMapping(info, handler, method); 
    }
}
  1. 注入目標處理程序和控制器的處理程序映射。

  2. Prepare the request mapping meta data.

  3. 獲取處理程序方法。

  4. 添加註冊。

Functional Endpoints

Last updated

Was this helpful?