2017-08-02 68 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