我是Java中的Restful web服务的新手,这是我的第一个Web应用程序,我搜索了很多,但每个人都提出了比我需要的更复杂的问题。
我有一个非常简单的html,带有文本框和提交按钮。我在我的网络服务中也有一个POST功能,如下所示:
@POST
@Consumes({MediaType.APPLICATION_FORM_URLENCODED,MediaType.APPLICATION_JSON})
public Response showSearchResult(String incomingData) throws Exception {
String query = incomingData;
RepositoryMongo repository = new RepositoryMongo("InvertedIndex", "InvertedIndex", "documents");
InvertedIndex invertedIndex = new InvertedIndex(repository);
ArrayList<Posting> result = invertedIndex.processQuery_Posting_Based(query, 10,"1");
String htmlResult = invertedIndex.getHTMLResult(result);
return Response.ok(htmlResult).build();
}
问题是我的incomingData =“query_input = canada + singer&amp; search = search”,而我希望它只是文本框的内容。我可以解析我收到的字符串,但这样正确吗?有什么方法可以直接把“加拿大歌手”作为输入吗?我该如何控制输入类型?
答案 0 :(得分:1)
您可以对POST请求使用@FormParam
注释,或为GET请求使用@PathParam
注释。这些参数继续用于您的方法,以指示参数的值应从URL(对于GET)或已发布的正文(对于POST)中拉出。
查看http://www.vogella.com/tutorials/REST/article.html的第7.3节,其中有一个工作示例。
答案 1 :(得分:0)
对于此结果 - “query_input = canada + singer”,您可以使用@QueryParam("query_input")
获取网址值。
可替换地, 我们甚至可以使用这个@Context UriInfo
来实现它getQueryParameters()方法有getFirst - 在其中包含fetch的参数,如下所示
String query_input_value= url.getQueryParameters().getFirst("query_input");
试试这个:
@POST
@Consumes({MediaType.APPLICATION_FORM_URLENCODED,MediaType.APPLICATION_JSON})
public Response showSearchResult(@Context UriInfo url) throws Exception {
String query_input_value= url.getQueryParameters().getFirst("query_input");
String query = incomingData;
RepositoryMongo repository = new RepositoryMongo("InvertedIndex", "InvertedIndex", "documents");
InvertedIndex invertedIndex = new InvertedIndex(repository);
ArrayList<Posting> result = invertedIndex.processQuery_Posting_Based(query, 10,"1");
String htmlResult = invertedIndex.getHTMLResult(result);
return Response.ok(htmlResult).build();
}