我在为项目创建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,但这是我第一次遇到很多问题。
我做错了什么?
答案 0 :(得分:1)
您的@QueryParam
参数是路径参数,而不是查询参数。
请考虑将@PathParam
替换为{{1}}。
答案 1 :(得分:0)
@QueryParam
可以从请求URL的Query组件中提取查询参数,如果请求中不存在查询参数,那么该值将是forList的空集合。
实际上,您的search
参数是路径参数,因此您需要将@QueryParam
替换为@PathParam
。
我建议您查看文档:{{3}}