У меня есть метод API ASP.NET Core 2.0:
[HttpPost("api/days")]
GetDays([FromBody] DateTime startTime, [FromBody]DateTime endTime)
{
}
И я попытался отправить запрос Post с помощью Postman, но возникла проблема, параметры всегда имеют значения по умолчанию.
Вот мой запрос на публикацию выглядит так:
Результат: не сработало; Оба параметра в методе API получают значения по умолчанию.
Если я изменю свои параметры API на:
[HttpPost("api/days")]
GetDays([FromBody] Inputparam param)
{
}
public class Inputparam
{
public DateTime startTime { get; set; }
public DateTime endTime { get; set; }
}
Это отлично сработало!
Но я хочу отправлять параметры напрямую, а не внутри объекта-оболочки.
Итак, я вернулся с первым методом API, а затем попробовал:
Результат: не сработало; Оба параметра в методе API получают значения по умолчанию.
И этот:
Результат: не работает идеально; Просто установите его первый параметр (startTime), а второй параметр все еще имеет значение по умолчанию.
И этот:
Результат: не сработало; Оба параметра в методе API получают значения по умолчанию.
Я также пробовал [FromForm] вместо [FromBody] в API, ничего не изменилось.
Если я не использую [FromBody] в api и отправляю запрос через x-www-form-urlencoded, все работает отлично.
Но мне нужно отправить необработанное тело с помощью JSon.
Как я мог отправить 2 разных параметра в виде необработанного тела json?
Любая идея? В чем проблема?





Я обнаружил, что это всего лишь один [FromBody]разрешено в API, и это имеет смысл. Так что, вероятно, ответ таков: невозможно иметь 2 или более параметров с атрибутом [FromBody].
[FromUri] может выполнить задание. Для справки: Документация Microsoft
public class DateTimes
{
public datetime startdate { get; set; }
public datetime enddate { get; set; }
}
GetDays([FromBody] DateTimes _date)
{
//Controller action
}
URI:
api/values/?startdate=2018-06-01&endate=2018-07-01
Это не пост сырого тела