.NET Core: порядок необязательных параметров в запросе GET - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть .NET Core REST api, и меня просят обработать запрос GET, где шаблон маршрута необязательного параметра должен быть похож на …/parameterName/parameterValue/....

То, что я пробовал до сих пор, выглядит примерно так:

[HttpGet("{manatoryParam1}/{manatoryParam2}/{manatoryParam3}/optionalParamName1/{optionalParamName1?}/optionalParamName2/{optionalParamName2?}")]
public ActionResult Get(string manatoryParam1, string manatoryParam2, string optionalParamName1, int optionalParamName2)

Но у меня есть две проблемы:

  1. Как мне избежать первого необязательного параметрапотому что, когда я делаю следующий запрос: url/value1/value2/optionalParamName1//optionalParamName2/value я получаю ошибку 404
  2. Что если у меня длинный список необязательных параметров и мне нужен только последний необязательный параметр, я должен ввести все предыдущие необязательные параметры, или есть другой способ ввести только необходимые параметры?

1 Ответ

0 голосов
/ 10 февраля 2019

Это выглядит неправильно по многим причинам.Лучший способ справиться с этим - создать класс со свойствами, которые вы хотите передать, и затем выполнить некоторую логику для извлечения значений на стороне сервера.Примерно так:

public class QueryParameters
{
    public string manatoryParam1 {get; set;}
    public string manatoryParam2 {get; set;}
    public string optionalParamName1 {get; set;}
    public int optionalParamName2 {get; set;}
}

И тогда ваш контроллер будет выглядеть так:

[HttpGet]
public IActionResult Get(QueryParameters query)

Примечание: вы должны также возвращать IActionResult - это помогает с модульными тестами; -)

...