Spring MVC RequestMapping 不适用于 RestController

Jul*_*tte 2 java spring-mvc spring-restcontroller request-mapping

我想要一个带有基本映射“/user”的 RestController 类(因此不同的函数将具有“/user/add”、“/user/remove”等路径或使用 POST/GET 等)

这是我不明白并且无法开始工作的部分:

@RestController
public class UserController {

  @GetMapping("/user")
  public Response login(Principal principal){
    //some output
  }
}
Run Code Online (Sandbox Code Playgroud)

这种情况下的预期行为是我可以在“/user”下访问我的输出。这按预期工作。现在,如果我将其修改为以下内容(因为此控制器中的所有功能都应该有一个以“/user”开头的路径,这会更清晰)

@RestController
@RequestMapping("/user")
public class UserController {

  @GetMapping("/")
  public Response login(Principal principal){
    //some output
  }
}
Run Code Online (Sandbox Code Playgroud)

我得到一个 404-Error 页面并且无法再访问“/user”我发现的所有示例都使用相同的语法(或者有时@RequestMapping(path="/user") 但它不起作用)并且我不知道为什么它不起作用。有人能告诉我我的错误在哪里吗?

小智 5

如果您使用此代码:

@RestController
@RequestMapping("/user")
public class UserController {

@GetMapping("/")
public Response login(Principal principal){
//some output
 }
}
Run Code Online (Sandbox Code Playgroud)

然后你的 url 末尾应该有“/”,比如“ http://localhost:8080/user/

我只想从@GetMapping("/") 中扔掉“/”符号,然后像这样离开:

@RestController
@RequestMapping("/user")
public class UserController {

@GetMapping
public Response login(Principal principal){
//some output
 }
}
Run Code Online (Sandbox Code Playgroud)

如果您需要地图获取或发布,您可以像这样使用:

@RestController
@RequestMapping("/user")
public class UserController {

@GetMapping("/add")
public SampleObj getJson() {
    return new SampleObj();
 }
}
Run Code Online (Sandbox Code Playgroud)

它应该工作。