Как указать пользовательские имена параметров URL? - PullRequest
1 голос
/ 23 октября 2019

В маршруте ASP.NET я могу использовать атрибут FromUri, чтобы указать, что аргумент должен быть взят из параметров URL запроса. В случае сложного объекта ASP.NET будет удобно получать значения отдельных свойств из параметров:

public class MyData
{
    public int Value1 { get; set; }

    public int Value2 { get; set; }
}

[HttpGet]
[Route("getvalue")]
public string getValue([FromUri] MyData args)
{
    // ...
}

Теперь наш гид по стилю требует, чтобы параметры веб-API были CamelCased, тогда как свойства объекта C # должныбыть PascalCased.

Как я могу сказать ASP.NET использовать настраиваемые имена ("value1" и "value2" в приведенном выше примере) для параметров веб-API, а не имена свойств?

РЕДАКТИРОВАТЬ: Для ясности, результирующий формат URL-адреса является фиксированным: мой маршрут должен обслуживать запросы, такие как

.../getvalue?value1=15&value2=43

С приведенным выше кодом, я почти на месте, но запрос все ещедолжно быть

.../getvalue?Value1=15&Value2=43

Следовательно, мой вопрос заключается в том, как указать value1 и value2 в качестве имен параметров URL вместо Value1 и Value2, соответственно, без изменение имен свойств C #.

1 Ответ

0 голосов
/ 23 октября 2019

Я бы сделал это примерно так.

[HttpGet("dosomething/{value1}/{value2}")]
public void DoSomething(int value1, int value2)
{
    // ...
}

Вы могли бы поэкспериментировать с параметрами запроса, но я не думаю, что вы можете сделать сопоставление объектов в URLсама по себе.

Если вы стремитесь к API RESTful, вам следует подумать о том, как value1 и value2 связаны друг с другом, и соответственно упорядочить URL (например, в порядке моего примера это должно иметь смысл"получить" URL: "dosomething / value1", и он должен возвращать менее конкретные данные, чем "dosomething / value1 / value2")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...