搜索API-HTTP查询参数格式
我已经为我工作的网站创建了一个搜索API。例如,它支持的一些查询包括:搜索API-HTTP查询参数格式,api,http,url,search,solr,Api,Http,Url,Search,Solr,我已经为我工作的网站创建了一个搜索API。例如,它支持的一些查询包括: /api/search-返回流行的搜索结果 /api/search?q=car-返回与术语“car”匹配的结果 /api/search?start=50&limit=50-返回从偏移量50开始的50个结果 /api/search?user_id=3987-返回id为3987的用户拥有的结果 这些查询参数可以混合和匹配。它是在引擎盖下使用的分面搜索实现的 我正在添加可以根据数值属性过滤结果的查询参数。例如,我可能只希望返回
-返回流行的搜索结果/api/search
-返回与术语“car”匹配的结果/api/search?q=car
-返回从偏移量50开始的50个结果/api/search?start=50&limit=50
-返回id为3987的用户拥有的结果/api/search?user_id=3987
/api/search?views:[100 TO *]
谷歌似乎在做这样的事情:
/api/search?viewsisgt:100
这两个似乎对我都不太有吸引力。是否有指定此类查询术语的最佳实践?有什么建议吗?谷歌的方法很好,为什么没有吸引力 我的建议如下:
/api/search?viewsgt=100
谷歌的方法是好的,为什么它没有吸引力 我的建议如下:
/api/search?viewsgt=100
我认为极限的数学表示法是合适的
[x the lower limit can be atleast x
x] the upper limit can be atmost x
(x the lower limit must be strictly greater than x
x) the upper limit must be strictly lesser than x
因此,
q=cats&range=(100,200) - the results from 100 to 200, but not including 100 and 200
q=cats&range=[100,200) - the results from 100 to 200, but the lower limit can be greater than 100
q=cats&range=[100 - any number from 100 onwards
q=cats&range=(100 - any number greater than 100
q=cats&range=100,200 - default, same as [100,200]
当然,它的美学仍然值得怀疑,但它似乎(依我看)是人眼最直观的,解析器仍然很容易
根据=,&,[,],(,)保留我认为极限的数学符号是合适的
[x the lower limit can be atleast x
x] the upper limit can be atmost x
(x the lower limit must be strictly greater than x
x) the upper limit must be strictly lesser than x
因此,
q=cats&range=(100,200) - the results from 100 to 200, but not including 100 and 200
q=cats&range=[100,200) - the results from 100 to 200, but the lower limit can be greater than 100
q=cats&range=[100 - any number from 100 onwards
q=cats&range=(100 - any number greater than 100
q=cats&range=100,200 - default, same as [100,200]
当然,它的美学仍然值得怀疑,但它似乎(依我看)是人眼最直观的,解析器仍然很容易
根据=,&,[,],(,)是保留的只需使用“,”作为从/到的分隔符,它读起来最好,在我看来是直观的:
# fixed from/to
/search?views=4,2
# upper wildcard
/search?views=4,
# lower wildcard
/search?views=,4
我把价值观包括在内。在大多数情况下,您不需要额外的独占/包含语法
绑定它甚至在一些开箱即用的框架(比如SpringMVC)中工作得非常好,这些框架将分离的值绑定到一个值数组中。然后可以使用特定的访问器(getMin(),getMax())包装内部数组 只需使用“,”作为from/to的分隔符,它读起来最好,在我看来是直观的:
# fixed from/to
/search?views=4,2
# upper wildcard
/search?views=4,
# lower wildcard
/search?views=,4
我把价值观包括在内。在大多数情况下,您不需要额外的独占/包含语法
绑定它甚至在一些开箱即用的框架(比如SpringMVC)中工作得非常好,这些框架将分离的值绑定到一个值数组中。然后可以使用特定的访问器(getMin(),getMax())包装内部数组 你是说
viewsgt=100
?我不喜欢它的原因是因为有太多的可能性可以解析:viewsgt
,viewslt
,viewsgt
,viewstte
,它把这个术语和条件混在一起,这似乎不太正确。你是说viewsgt=100
?我不喜欢它的原因是因为有太多的可能性可以解析:viewsgt
,viewslt
,viewsgt
,viewslte
,它把这个词和条件混在一起,这似乎是不对的。我从来没有想过这个句子会出现在h2中,我也弄不明白它是怎么来的!这只是一个范围参数。如何指定名称?可能是前缀<代码>查看\u计数\u范围=?或者更确切地说,假设范围规范,所以“仅一个范围参数”没有得到您的理解。多个范围参数的限制/丑陋是什么?您可以指定一个范围来过滤多个参数的结果。这是分面搜索。e、 例如,查找视图计数大于100且帖子计数大于5的项目。我从来没有想过这句话会出现在h2中,我无法理解它是如何出现的!这只是一个范围参数。如何指定名称?可能是前缀<代码>查看\u计数\u范围=?或者更确切地说,假设范围规范,所以“仅一个范围参数”没有得到您的理解。多个范围参数的限制/丑陋是什么?您可以指定一个范围来过滤多个参数的结果。这是分面搜索。e、 例如,查找视图计数大于100且帖子计数大于5的项目