我的产品中有搜索功能,用户可以输入他想要的任何内容。 这个字符串可以是多行的。
输入多行blob数据(字符串)后,用户点击“搜索”按钮。 这会将“blob”发送给我的Api。
现在我相信这将是一个POST请求。 (如果我错了,请纠正我) 但我不确定接收输入的最佳数据结构是什么。
(我正在使用dropwizard)。
我应该如何将输入发送到我的api?我的意见应该是:
我目前正在将Blob数据作为POST请求有效负载的一部分发送。
答案 0 :(得分:1)
'blob'不是你拥有的。 blob是Binary Large Object,而textarea
的内容绝对不是二进制而是简单文本。
Java JAX-RS REST API可以接收HTTP POST的正文:
@POST
public Respone postSearch(@RequestBody String searchFieldContent) {
// do search
// return Response
}
我建议不要使用POST进行搜索(可能是RPC),而是使用GET。构建一个查询参数,如
GET /api/things?search=what the user entered into the textarea
可以映射到
@GET
public Response searchThings(@RequestParam("search") String searchParam) {
// do search
// return Response
}
修改强>
使用POST进行搜索不是RESTful。如果您不能使用GET,更好的方法是将搜索建模为具有状态的单独资源。
客户端:
POST /api/searches
the long text the user entered in the textarea
服务器:
201 Created
Location: /api/searches/id-of-search-created-by-server
客户端
GET /api/searches/id-of-search-created-by-server
服务器:
200 OK
Content-Type: application/json
{
"query": "the long text the user entered in the textarea",
"state", "finished",
"result": {
"length": 23,
"documents: [
{
"id": "id of first search hit",
"title": "some title"
},
...
]
}
}