我希望这不是一个简单的问题。我是Java Web服务世界的新手,似乎无法在控制器中访问PathVariables。我正在使用STS,并且没有抱怨我的语法错误。
比正确答案重要得多,我真的很想知道为什么这不起作用。
这是一些我无法使用的示例代码:
@RestController public class TestController { @RequestMapping("/example") public String doAThing( @PathVariable String test ) throws MessagingException { return "Your variable is " + test; } }
如果我像这样卷曲一下:
curl http://localhost:8080/example?test=foo
我收到以下答复:
{“时间戳”:1452414817725,“状态”:500,“错误”:“内部服务器错误”,“例外”:“ org.springframework.web.bind.MissingPathVariableException”,“消息”:“缺少URI模板变量'test '用于类型为String“,” path“:” / example“}的方法参数
我知道我已正确连接了其他所有设备,其他控制器也正常工作。
我觉得我这里一定缺少一些基本原理。
提前致谢。
如果使用路径变量,则它必须是URI的一部分。正如您没有在URI中提到的那样,而是在方法参数中使用的,spring尝试从路径URI中找出并分配该值。但是此路径变量不在路径URI中,因此抛出MissingPathVariableException。
这应该工作。
@RestController public class TestController { @RequestMapping("/example/{test}") public String doAThing( @PathVariable String test ) throws MessagingException { return "Your variable is " + test; } }
而你的卷曲要求就像
curl http://localhost:8080/example/foo //here the foo can be replace with other string values