我为电视广播公司定义了RESTful API,特别是在询问数据子集时的路径应该是什么样子。例如,如果我想在特定日期之间获取特定频道的所有内容,该频道上的语言,我将如何按日期过滤?下面的路径似乎太长了:
endpoint.com/content/channels/{channel_name}/language/french/from/20160701/to/20160801
我看到的另一种选择是将搜索视为资源'并在请求正文中将日期范围过滤器发布到它,如SO :( How to design RESTful search/filtering?)
中所述有什么想法吗?
答案 0 :(得分:1)
我建议您使用@QueryParam
注释通过从URI获取资源来过滤资源。
要过滤资源,您可以使用类似
的URI/channel_name?language=french&from=20160701&to=20160801
使用JAX-RS,您可以访问这些值:
@GET
@Path("/channel_name")
List<Content> getContent(@QueryParam("language")String lang,
@QueryParam("from")Long from,
@QueryParam("to")Long to) {
// your logic
}
当然,在这种情况下,你需要处理异常和repsonse,包括状态代码。
答案 1 :(得分:0)
我也为电视广播公司工作,我们采取的方法是通过资源发布搜索条件。更容易处理,并没有创造一条无尽的道路。
界面:
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);
$command = escapeshellcmd("sudo /usr/bin/python /script/provisioning/temp_script/test/test.py ");
$output = shell_exec($command);
echo $output;
?>
实施:
@POST
@Path("/lookup")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
List<Content> getContent(CriteriaSearch cr);
...