缺少类型为String的方法参数的URI模板变量

时间:2018-02-14 10:49:23

标签: java spring spring-data-jpa crud

这就是我的REST控制器的样子

@RequestMapping(method = GET, path = "/type/{eventtype}/events")
@ResponseBody
public ResponseEntity<?> getEventsSpecificType(@PathVariable String eventType) throws InvalidRequestException {
    return ResponseRestBuilder.createSuccessResponse(
            portEventRepository.
                    findByEventTypeOrderByTimestampAsc
                            (eventType));
}

使用以下URI从Postman调用

http://localhost:8181/type/default/events

让我犯这个错误

{
"timestamp": 1518605163296,
"status": 500,
"error": "Internal Server Error",
"exception": "org.springframework.web.bind.MissingPathVariableException",
"message": "Missing URI template variable 'eventType' for method parameter of type String",
"path": "/type/default/events"

}

我错过了什么?是否正确映射了String变量?

2 个答案:

答案 0 :(得分:4)

您必须提供路径变量的名称,方法参数的名称并不重要。并且路径变量的名称必须与完全路径中使用的名称(eventtype)匹配。

getEventsSpecificType(@PathVariable("eventtype") String eventType)

如果您未指定@PathVariable,则该名称必须与路径中使用的名称完全匹配。因此,将eventType方法参数更改为eventtype。

答案 1 :(得分:0)

我也遇到了同样的问题,通过**更改路径变量的名称如

@RequestMapping(method = GET, path = "/type/{eventType}/events")
@ResponseBody
public ResponseEntity<?> getEventsSpecificType(@PathVariable String eventType) throws InvalidRequestException {