使用 flurl 处理 Get/{id} 与 Get/id

Handing Get/{id} vs Get/id with flurl

我正在尝试让 Flurl 正常工作,但我对传递 ID 时如何正常工作感到困惑。

[HttpGet("Get/{id}")]
public IActionResult Get(int id)
{
    // Some something and return
}

以上预计

Get/1

所以在 Flurl 中:

var result = await _baseUrl
    .AppendPathSegment("/Get")
    .SetQueryParam("id", id)
    .GetJsonAsync();

这会产生这个:

/Get?id=8

...然后失败并返回 404。

如何让 Flurl 设置一个查询参数 /id 或者让我的 get 接受 Get/id 和 Get?id=

我可以做下面的,但是看起来不是很优雅

var result = await _baseUrl
    .AppendPathSegment(string.Format("/Get/{0}", id))
    .GetJsonAsync();

我是这样使用的:

var result = "https://api.site.com/v1/".AppendPathSegment("endpoint").AppendPathSeparator().SetQueryParam("get", id)
// Outputs: "https://api.site.com/v1/endpoint/?get=5"

SetQueryParam 会将值添加为查询字符串,但您需要将该值作为路径的一部分。而是考虑使用 AppendPathSegments 方法,例如:

var result = _baseUrl
    .AppendPathSegments("get", id)
    .GetJsonAsync();