Spring MVC - 使用RequestParam命中URL失败,404 Not Found错误

时间:2014-05-26 14:02:36

标签: spring web-services rest spring-mvc

我在我的项目中使用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);
}

2 个答案:

答案 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