У меня есть действие в моем веб-API, который возвращающую HttpResponseMessage
:Web API: добавить данные в HttpResponseMessage
public async Task<HttpResponseMessage> Create([FromBody] AType payload)
{
if (payload == null)
{
throw new ArgumentNullException(nameof(payload));
}
await Task.Delay(1);
var t = new T { Id = 0, Name = payload.tName, Guid = Guid.NewGuid() };
var response = new MyResponse { T = t };
var result = new HttpResponseMessage(HttpStatusCode.OK) { Content = new ObjectContent(typeof(MyResponse), response, new JsonMediaTypeFormatter { SerializerSettings = { NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore } }) };
return result;
}
Теперь моя проблема заключается в том, что если запрос сделан запрос-х Content-Type
является application/xml
, Я должен положить тело ответа с помощью xml formatter
.
Есть ли способ использовать общий класс и позволить фреймворку решить, какой форматтер использовать во время выполнения на основе типа содержимого запроса?
Я сделал это, и запрос был XML один и ответ был ... Я JSON не знаю, почему –
основе принимают заголовок запроса. если вы хотите заставить контент, основанный на типе содержимого запроса, взять его из запроса и включить его в перегрузку ответов на создание. 'Request.CreateResponse (HttpStatusCode.OK, response, Request.Content.Headers.ContentType);' – Nkosi
При этом тип содержимого ответа будет основываться на типе содержимого запроса. – Nkosi