Вручение 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"
Другие вопросы по тегам