В моем веб-api я использую методы POST, поэтому клиент может отправлять функциональные параметры с помощью JSON. Однако я заметил, что наличие модели (dto) для этих параметров как на клиенте, так и на сервере не имеет смысла. Или это?Извлечение параметров в методе POST API WEB
Поскольку я использую POST, создается объект модели для обязательной привязки? Иногда я действительно имею дело с сущностью, такой как Клиент, и это имеет смысл, но когда я имею дело с 3 случайными параметрами, мне действительно нужно создать модель (dto), чтобы я мог получить данные в функцию POST?
Вот моя функция POST в моем WEB API:
[HttpPost, Route("GetAccountInformation")]
public IActionResult RetrieveAccountInformation(GetAccountInformationParamsObj myParams)
{
var retVal = _repository.GetAccountInformation(myParams.StartDate, myParams.EndDate, myParams.Count)
return Ok(retVal);
}
Вот пример того, что клиент будет отправлять в теле POST:
{
"StartDate":"10-25-2015",
"EndDate":"11-25-2015",
"Count":20
}
Было бы замечательно, если следующее будет работать, но значения параметров в конце концов остаются пустыми при подаче запроса:
[HttpPost, Route("GetAccountInformation")]
public IActionResult RetrieveAccountInformation([FromBody] DateTime startDate, DateTime endDate, int count = 0)
{
}
У меня возникли проблемы с тем, что вы на самом деле спрашиваете. Использование реальной модели не требуется * для любого взаимодействия с HTTP, это просто способ семантической группировки и понимания объектов в вашем домене. Делает ли это 'params' вещь даже для компиляции? Я бы подумал, что это зарезервированное ключевое слово. Кроме того, вы говорите о POST-запросах, но ваш метод «Get». Можете ли вы уточнить, что вы спрашиваете? – David
Приносим извинения за имя params и путаницу с именем функции. Я обновил все, чтобы иметь больше смысла. Я хотел знать, требуется ли использование реальной модели для взаимодействия HTTP POST. Если нет, то как клиент может отправить мне параметры JSON, и я получаю их без использования реальной модели? Например: клиент является приложением vb6, а разработчик приложения VB6 хочет вызвать GetAccountInformation в моем веб-интерфейсе. Разработчик отправит JSON, который содержит 3 параметра, и я верну список результатов в JSON. –
Вы можете * иметь возможность иметь только отдельные типы значений в качестве параметров для вашего серверного метода вместо модели. (По крайней мере, MVC допускает это. Семантика WebAPI может сделать ее немного странной.) Но представляется более разумным просто упорядочивать значения в классе в любом случае. – David