2017-08-02 34 views
1

我想要Flurl工作,我坚持如何得到工作时传入一个ID。处理获取/ {编号}与获取/编号与flurl

[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同时接受获取/ ID和Get?ID =

我可以做以下,但它似乎并不很优雅

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

我没有用Flurl,但我猜测'SetQueryParam'将设置一个查询字符串,但你正在建设一个路径。你可以做'_baseUrl.AppendPathSegments(“get”,id.ToString())'? – DavidG

+0

@DavidG我可以,不需要.ToString。那很简单!添加一个答案,我会接受。谢谢 –

回答

1

SetQueryParam将增加值作为查询字符串,但你需要的值是路径的一部分。相反,考虑使用AppendPathSegments方法,例如:

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

我用这样的:

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

OP特别不希望查询字符串。 – DavidG