Я хочу отправить запрос HTTP POST с телом, содержащим информацию, которая составляет простой пост в блоге, ничего необычного.
Я прочитал здесь, что, если вы хотите связать сложный тип (т.е. тип, который не является string
, int
и т.д.) в веб-API, хороший подход заключается в создании настраиваемого связующего объекта.
У меня есть настраиваемое связующее устройство (BlogPostModelBinder
), которое, в свою очередь, использует пользовательский поставщик стоимости (BlogPostValueProvider
). Я не понимаю, как и где я могу получить данные из тела запроса в BlogPostValueProvider
?
Внутри связующего объекта это то, что, как я думал, будет правильным способом, например, получить название.
public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext)
{
...
var title= bindingContext.ValueProvider.GetValue("Title");
...
}
в то время как BlogPostValueProvider выглядит следующим образом:
public class BlogPostValueProvider : IValueProvider
{
public BlogPostValueProvider(HttpActionContext actionContext)
{
// I can find request header information in the actionContext, but not the body.
}
public ValueProviderResult GetValue(string key)
{
// In some way return the value from the body with the given key.
}
}
Это может быть разрешено более простым способом, но поскольку я изучаю Web API, было бы неплохо заставить его работать.
Моя проблема в том, что я не могу найти, где хранится тело запроса.
Спасибо за любое руководство!