【SpringBoot】URL路徑映射規則


正常的映射

@RestController  //指示該類為一個控制器類,用來處理Rest請求
@RequestMapping("/rest/xxx/sys") //類級別映射URL跟路徑,只能用@RequestMapping
public class AccountController{
    @PostMapping(value = "/account/login") //響應該URL的post請求
    public RestRsp<AccountMO> login(@RequestBody AccountMO account)
    {
        return null;
    }

    @GetMapping(value = "/account/{id}") //響應該URL的Get請求
    public RestRsp<AccountMO> getById(@PathVariable String id)
    {
        return null;
    }

    @DeleteMapping(value = "/account/{id}") //響應該URL的Delete請求,與上面的URL相同,但請求方式不同,會被映射到相應的方法進行處理,不會出錯
    public RestSimpleRsp deleteById(@PathVariable String id)
    {
        return null;
    }

    @PutMapping(value = "/account")
    public RestRsp<AccountMO> modify(@RequestBody AccountMO account)
    {
        return null;
    }

    @PostMapping(value = "/account")
    public RestRsp<AccountMO> add(@RequestBody AccountMO account)
    {
        return null;
    }

    @PostMapping(value = "/accounts")
    public RestRsp<AccountMO> getList(@RequestBody QueryParam queryParam)
    {
        return null;
    }
}

小結:

同樣的URL,不同的Method(Get、Put、Post、Delete)會被映射到各自的方法上處理,這就是Rest的魅力,沒必要為每種操作定義不同URL(以前只有Post和Get,是做不到的)

 

注意:

如上的Controller,如果做這樣的擴展:

    @GetMapping(value = "/")
    public String test3()
    {
        return "test3:get:";
    }

訪問/rest/test會報錯404,而訪問/rest/test/則正常,可以映射到test3方法。

 

錯誤映射的嘗試

1、基於類級別的根URL需唯一,兩個類映射到同樣的URL是不允許的,SprintBoot啟動時就會報錯。

2、企圖通過嵌套類去擴展URL是不可行的,編譯不會報錯,SprintBoot啟動也沒問題,但是訪問URL時報404(Not Found)

如下圖的代碼,訪問URL   /rest/test/2/haha/b 報404

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM