【问题标题】:Query string always returns NULL on Server side查询字符串总是在服务器端返回 NULL
【发布时间】:2018-01-09 10:56:15
【问题描述】:

我在为项目创建 API 时遇到了一些问题。

我的问题如下:

在客户端,我有一个 Javascript 文件,其中包含对我的服务器端的 GET 请求。

$("#searchBtn").click(function() {
    $("#snipList").empty();
    var search = $("#tagSearch").val();
    var send = "http://localhost:8081/OhSnip/api/snippets/" + search;
    $.getJSON(send, function(data, status) {
        console.log(data);       
        $.each(data, function(index, value) {
            console.log(value.nome_snippet);
            $("#snipList").append("<div class='snippet'><h1>" + value.nome_snippet + "</h1><br><h3>" + value.classificacao + "/5</h3>");
        });
    });
});

我需要将文本框的内容发送到服务器端。

在服务器端,我有这个

@Path("/snippets")
public class Resource {

    @Path("/{search}")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Snippet> getSearch(@QueryParam("search") String search) {
        System.out.println(search);
        SnippetManager SM = SnippetManager.getInstance();       
        if (search!=null) {
            return SM.getSnippets(search);
        } else {
            return SM.getSnippets();
        }   
    }
}

我不知道为什么搜索查询总是返回 null。

我的 JavaScript 代码可以在我使用过的大多数 API 上运行,但这是我第一次遇到很多问题。

我做错了什么?

【问题讨论】:

  • 你确定你的前端确实增加了一些价值吗?
  • 如果您希望查询参数不必是"http://localhost:8081/OhSnip/api/snippets?search=" + search; 或类似参数?
  • 你没有发送任何查询字符串值...

标签: javascript java jquery tomcat jersey


【解决方案1】:

您的search 参数是路径参数,而不是查询参数。

考虑将@QueryParam 替换为@PathParam

【讨论】:

    【解决方案2】:

    @QueryParam 可以从请求 URL 的 Query 组件中提取查询参数,如果请求中不存在查询参数,则该值将是一个空集合 forList。

    实际上,您的search 参数是一个路径参数,因此您需要将@QueryParam 替换为@PathParam

    我建议你看看文档:https://jersey.github.io/documentation/latest/user-guide.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-15
      • 2018-09-18
      • 2019-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-02
      相关资源
      最近更新 更多