如何使用ASP创建一个接受请求主体中任何内容类型的端点.Net Web API



我想创建一个通用的API端点,客户端可以将文本或文件数据发布到其中,我们不会知道数据的内容/媒体类型。框架似乎要求为HTTP头中传递的任何内容类型指定内容格式化器,否则会抛出错误。我不想为我们可能接受的每种媒体类型定义格式化器,因为我们还不知道它们可能包含什么。

是否有一种方法可以使用通用媒体类型格式化程序定义端点,或者根本不指定端点?如果我使用一个泛型对象作为我的方法参数,它似乎并不介意,但是框架总是挂在不能处理没有格式化器的媒体类型上。

我们实际上不需要能够处理这些数据,只需要存储它(对于消息系统之类的东西)。

另外,我宁愿接收这些数据作为请求体的原始内容,而不使用多部分表单请求,但是如果这样做更有意义,那么它可能是一个选项。

或者如果你想要比Youssef的建议更低的级别,你可以…

public Task<HttpResponseMessage> Post(HttpRequestMessage request) {
   var stream = await request.Content.ReadAsStreamAsync();
   return new HttpResponseMessage(HttpStatusCode.Ok) { RequestMessage = request } ;
}

您可以通过自己阅读内容来完全绕过格式化器。下面是一个例子:

public async Task Post()
{
    string content = await Request.Content.ReadAsStringAsync();
    // Store away the content
}

这根本不需要您使用或定义任何格式化程序。

相关内容

最新更新