getJSON возвращает 400 неверных запросов, используя параметр тела, но не параметр переменной пути - PullRequest
0 голосов
/ 03 мая 2019

При попытке вызвать 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 неверных запросов, и URL выглядит так

xx / yy / zz / jarName? 131,31

с 131,31, который я печатаю на переднем конце, и то, что я хочу в качестве параметра "версия".Я делаю простую ошибку с отображением запроса?Я никогда не использовал Spring раньше, но мне трудно отлаживать, так как он даже не доходит до серверной части

Logger on Back end выдает это сообщение

[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 голосов
/ 03 мая 2019

Возможно, попробуйте изменить {jarName} на регулярное выражение (т.е. {jarName:.+}), поскольку существует известных проблем с последними @PathVariable, содержащими точки.

Также может быть полезно добавить TRACE logging на org.springframework.web, так как вы увидите входящий запрос и любые проблемы с ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...