我在我的项目中使用Spring MVC,在将用户请求映射到URI时,我收到404错误。这是我想要调用的函数框架:
@RequestMapping(value="/inventory/discovery", method = RequestMethod.GET, params = {"discoveryType"}, produces = {"application/json"})
public String getDiscoveryByType(@RequestParam("discoveryType") String discoveryType)
{
return discoveryType;
}
我希望在提供URL
时调用此方法 http://<some-ip>/inventory/discovery/discoveryType?=DMVPN
但是,当我使用Chrome的Advanced Rest Client测试代码时,我发现它尝试访问的URI是“/ inventory / DMVPN”,而不是“/ inventory / discovery?discoveryType = DMVPN”。
我在这里遗漏了什么吗?我没有看到我的网址语法错误
我的代码中有另一个函数(但我不认为它导致问题)具有相同的请求映射值,但没有params属性。
@RequestMapping(value = "/inventory/discovery", method = RequestMethod.GET, produces = { "application/json" })
public ResponseEntity<DiscoveryNIOListResult> getAllDiscovery() {
logger.trace("getAllDiscovery");
List<DiscoveryNIO> listDiscoveryNIO = discoveryDasClient.getDiscoveryList();
DiscoveryNIOListResult result = new DiscoveryNIOListResult();
result.setResponse(listDiscoveryNIO);
return new ResponseEntity<DiscoveryNIOListResult>(result, HttpStatus.OK);
}
答案 0 :(得分:0)
好的,再看看你的网址:
http://<some-ip>/inventory/discovery/discoveryType?=DMVPN
这不是将discoveryType作为请求GET参数传递。为此您需要这样做:
http://<some-ip>/inventory/discovery&discoveryType?=DMVPN
如果您想改用路径变量,可以执行以下操作:
http://<some-ip>/inventory/discovery/DMVPN
将处理程序更改为:
@RequestMapping(value="/inventory/discovery/{discoveryType}", method = RequestMethod.GET, produces = {"application/json"})
public String getDiscoveryByType(@PathVariable("discoveryType") String discoveryType)
{
return discoveryType;
}
看起来你正试图混合这两种方法,但这种方法无效。
答案 1 :(得分:0)
尝试将您的网址更改为:
http://<some-ip>/inventory/discovery?discoveryType=DMVPN