我需要在 REST API 中支持 OR 语句,但我不知道如何构建正确的查询字符串。也许,像这样的东西?
- /rest?author=奥巴马&author=麦凯恩
- /rest?author=奥巴马|麦凯恩
或者可能存在标准解决方案?
我需要在 REST API 中支持 OR 语句,但我不知道如何构建正确的查询字符串。也许,像这样的东西?
或者可能存在标准解决方案?
选项 1:您可以有一个代表所有值的字符串。在代码中,您将根据一些分隔符将字符串分开。
key=val1,val2,val3
让我们说(在伪代码中):var vals = explode( GETPARAMS['key'] , ',' )
选项 2:您可以在 url 参数中使用数组表示法:
key[0]=val1&key[1]=val2&key[2]=val3
在代码中, 的值key
将是一个数组:array( val1, val2, val3 )
您可以选择允许复杂过滤器的OpenData 过滤器。
您示例中的端点如下所示:
/rest?$filter=author eq Obama and author eq McCain
/rest?$filter=author eq Obame or author eq McCain
如果您使用的是 Asp.NET Web-Api,则可以使用Microsoft ASP.NET Web API OData。
Disclamer:在 Web-Api 中使用 OData 使用实体框架(或使用 IQueryable 的东西)