Вручение Get/{ID} против Get / ID с Flurl
Я пытаюсь получить 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 принять оба Get/id и Get? Id =
Я могу сделать следующее, но это не кажется очень элегантным
var result = await _baseUrl
.AppendPathSegment(string.Format("/Get/{0}", id))
.GetJsonAsync();
2 ответа
Решение
SetQueryParam
добавит значение в виде строки запроса, но вам нужно, чтобы это значение было частью пути. Вместо этого рассмотрите возможность использования AppendPathSegments
метод, например:
var result = _baseUrl
.AppendPathSegments("get", id)
.GetJsonAsync();
Я использую это так:
var result = "https://api.site.com/v1/".AppendPathSegment("endpoint").AppendPathSeparator().SetQueryParam("get", id)
// Outputs: "https://api.site.com/v1/endpoint/?get=5"