恕我直言,有两种处理资源查询的技术:
represent(Variant variant)
或handleGet()
。 acceptRepresentation(Representation entity)
和handlePost()
。handleGet 的文档说:
通过自动返回可用的最佳表示来处理GET调用。根据请求中可用的客户端首选项自动支持内容协商。可以使用“negotiateContent”属性关闭此功能。
和代表:
返回先前通过getVariants()方法返回的给定变量的完整表示形式。如果变体已经是完整表示,则默认实现直接返回变量。在所有其他情况下,您需要覆盖此方法以提供自己的实现。
这两种类型的实现有哪些主要区别?在哪种情况下,我应该更喜欢一个?是不是我可以用例如handleGet()
represent()
可以使用的所有内容handleGet
我首先开始使用represent
为响应设置实体。当我实现另一个项目时,我使用了{{1}}。回想起来,我不能说一种方式比另一种方式更好或更清晰。你有什么期限?
答案 0 :(得分:0)
我建议使用represent(Variant)
因为您将利用默认实施handleGet(Request, Response)
提供的内容协商功能。
例如:
@Post('html')
Representation doSearch(Form form) throws ResourceException {
// get a field from the form
String query = form.getFirstValue("query");
// validate the form - primitive example of course
if (query == null || query.trim().length() == 0)
throw new ResourceException(Status.CLIENT_ERROR_BAD_REQUEST, "Query is required.");
// do something
SearchResults searchResults = SearchEngine.doSearch(query);
// return a HTML representation
return new StringRepresentation(searchResults.asHtmlString(), MediaType.TEXT_HTML);
}
使用这种方法的优点包括传入表示被自动转换为有用的表单,该方法可以命名为对您的应用程序有意义的任何内容,只需通过扫描类您可以看到哪些类方法处理哪些HTTP方法,什么样的陈述。