问题描述
我们在API上使用JSON:API规范。当前在使用C#中的Flurl将过滤器参数格式化为规范时遇到问题。
示例:
var url = await Helpers.GetAPIPath()
.AppendPathSegment("orders")
.WithOAuthBearerToken(Helpers.GetAPIToken())
.SetQueryParams(new {
filters = "[work_orders]=true,[status]=pending_approval",include = "shipping-address,inventory-items.part"
}).GetAsync();
这会产生/orders?filters[work_orders]=true,[status]=pending_approval&include=shipping-address,inventory-items.part
以下是带有多个过滤器https://jsonapi.org/recommendations/#filtering
的JSON:API请求的文档如何为JSON:API规范构造类似于filter[work_orders]=true,filter[status]=pending_approval
的过滤器?
非常感谢您的帮助!
解决方法
此代码段能够实现正确的过滤参数。不知道是否有更清洁的方法来实现此目的,但到目前为止,它仍然有效!
var orderResponse = await Helpers.GetAPIPath()
.AppendPathSegment("orders")
.WithOAuthBearerToken(Helpers.GetAPIToken())
.SetQueryParam("filter[work_orders]=true")
.SetQueryParam("filter[status]=pending_approval")
.SetQueryParams(new {
include = "shipping-address,inventory-items.part",}).GetAsync();