getJSON使用主体参数而非路径变量参数返回400错误请求

时间:2019-05-03 19:11:30

标签: javascript jquery spring-mvc

尝试像这样调用getJSON时

<script>
$("#version").keyup( function() {
    var jarName = $("#artifactId").val();
    var jarVersion = $("#version").val();

    $.getJSON("/xx/yy/zz/"+jarName+"", jarVersion, function(completion) {
        $("#version").autocomplete({
            source: completion
            });
     });
});
</script>

具有这样的后端

    @RequestMapping(value = "/xx/yy/zz/{jarName}", method = {
            RequestMethod.GET}, produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public List<JsonNode> getVersionsAssociatedwithJar(@PathVariable String jarName, @RequestBody String version) {

我收到400错误的请求错误,网址看起来像这样

xx / yy / zz / jarName?131.31

使用131.31,我在前端输入的内容以及我想要的“版本”参数。我在请求映射中犯了一个简单的错误吗?我以前从未使用过spring,但是发现它很难调试,因为它甚至还没有到达后端

后端记录器给出此消息

[nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public java.util.List<com.fasterxml.jackson.databind.JsonNode> com.lendingclub.macgyver.dependency.AppDependencyApiController.getVersionsAssociatedwithJar(java.lang.String,java.lang.String)

1 个答案:

答案 0 :(得分:0)

也许尝试将{jarName}更改为正则表达式(即{jarName:.+}),因为存在known issues,最后一个@PathVariable包含点。

org.springframework.web上添加TRACE logging可能会很有用,因为您将看到请求进入并遇到任何问题。