这就是我的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变量?
答案 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 {