gpt4 book ai didi

java - Spring MVC 导致错误的操作

转载 作者:行者123 更新时间:2023-12-02 12:04:10 24 4
gpt4 key购买 nike

我有以下 Controller (遵循 Rails 命名约定)

@RestController("/vehicles")
public class VehiclesController {

@GetMapping
public Iterable<Vehicle> index(
@RequestParam(defaultValue = "1") int page,
@RequestParam(defaultValue = "25") int per
) {
...
}

@GetMapping("/{id}")
public Vehicle show(@PathVariable long id) {
...
}

@PostMapping
public Vehicle create(@RequestBody Vehicle vehicle) {
...
}

@PatchMapping("/{id}")
public void update(@PathVariable long id, @RequestBody Vehicle params) {
...
}

@DeleteMapping("/{id}")
public void destroy(@PathVariable long id) {
...
}

}

每次我发送请求

GET /vehicles

我希望请求被路由到 index 方法,但它实际上被路由到 show 方法,然后无法提供内容,因为框架无法转换“车辆”long。这是错误消息:

Failed to bind request element: org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'long'; nested exception is java.lang.NumberFormatException: For input string: "vehicles"

我的代码有什么问题吗?提前致谢。

最佳答案

@RestController 注释的 value 属性不是路径前缀,而是 Bean 名称。要为 Controller 中的所有带注释的方法指定前缀,请使用 @RequestMapping("/vehicles") 注释 Controller 类。

@RestController
@RequestMapping("/vehicles")
public class VehiclesController {

@GetMapping
public Iterable<Vehicle> index(
@RequestParam(defaultValue = "1") int page,
@RequestParam(defaultValue = "25") int per
) {
...
}

...
}

关于java - Spring MVC 导致错误的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47033467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com