我想创建一个通用的API端点,客户端可以将文本或文件数据发布到我们不知道数据的内容/媒体类型的位置。似乎框架需要为HTTP标头中传递的任何内容类型指定内容格式化程序,否则会引发错误。我不想为我们可能接受的每种可能的媒体类型定义格式化程序,因为我们还不知道它们可以包含的内容。
有没有办法用通用媒体类型格式化程序定义端点,或者根本不指定一个?我似乎并不介意使用通用Object作为我的方法参数,但是如果没有格式化程序,框架就会无法处理媒体类型。
我们实际上并不需要能够处理这些数据,只需存储它(就像消息系统一样)。
另一方面,我宁愿接收这些数据作为请求体的原始内容,而不是使用多部分表单请求,但如果以这种方式更有意义,那么它可能是一种选择。
答案 0 :(得分:2)
您可以通过自己阅读内容来完全绕过格式化程序。这是一个例子:
public async Task Post()
{
string content = await Request.Content.ReadAsStringAsync();
// Store away the content
}
这根本不需要您使用或定义任何格式化程序。
答案 1 :(得分:2)
或者,如果你想要比Youssef的建议更低,你可以做..
public Task<HttpResponseMessage> Post(HttpRequestMessage request) {
var stream = await request.Content.ReadAsStreamAsync();
return new HttpResponseMessage(HttpStatusCode.Ok) { RequestMessage = request } ;
}