如何在 web api 中传递 HttpContent 类型的参数?
How can I pass parameter of type HttpContent in web api?
背景故事是我有一个 Web api,它只是用作调用外部服务的网关。这样做的原因是我不想将真正的业务 API 暴露给外部服务。因此,在这个网关控制器中,它只是简单地从业务 API 接收信息,调用外部服务并 returns 响应给客户端,即业务 API。
在我的网关控制器中,我有一个 POST 操作,该操作采用 HttpContent
类型的参数,如下所示:
[Route("api/test")]
public void Test(HttpContent content)
{
}
但是网络 API 基础设施不知道如何序列化和反序列化 HttpContent
类型。有没有办法支持我的场景?谢谢
在任何控制器的处理程序中访问请求的内容是很自然的。里面调用Request.Content
就行了。您不能将它作为参数,因为它不是像 URI 段那样的映射,也不是序列化的内容。
试试这样的东西:
using System.Net;
using System.Net.Http;
// namespace + controller definition...
[Route("api/test")]
public HttpResponseMessage GetTest() // This is a GET handler
{
var myRequestContext = Request.Content;
// Do something with the content e.g
if (!myRequestContext.IsMimeMultipartContent())
{
Request.CreateResponse(HttpStatusCode.UnsupportedMediaType);
}
}
顺便说一句,假设您正在根据您所说的创建 REST API 控制器,请不要忘记指明此处理程序映射到的动词,方法是使用 [Http<REST_verb>]
属性 System.Web.Http
在处理程序上或在处理程序名称前加上动词。
希望对您有所帮助!
背景故事是我有一个 Web api,它只是用作调用外部服务的网关。这样做的原因是我不想将真正的业务 API 暴露给外部服务。因此,在这个网关控制器中,它只是简单地从业务 API 接收信息,调用外部服务并 returns 响应给客户端,即业务 API。
在我的网关控制器中,我有一个 POST 操作,该操作采用 HttpContent
类型的参数,如下所示:
[Route("api/test")]
public void Test(HttpContent content)
{
}
但是网络 API 基础设施不知道如何序列化和反序列化 HttpContent
类型。有没有办法支持我的场景?谢谢
在任何控制器的处理程序中访问请求的内容是很自然的。里面调用Request.Content
就行了。您不能将它作为参数,因为它不是像 URI 段那样的映射,也不是序列化的内容。
试试这样的东西:
using System.Net;
using System.Net.Http;
// namespace + controller definition...
[Route("api/test")]
public HttpResponseMessage GetTest() // This is a GET handler
{
var myRequestContext = Request.Content;
// Do something with the content e.g
if (!myRequestContext.IsMimeMultipartContent())
{
Request.CreateResponse(HttpStatusCode.UnsupportedMediaType);
}
}
顺便说一句,假设您正在根据您所说的创建 REST API 控制器,请不要忘记指明此处理程序映射到的动词,方法是使用 [Http<REST_verb>]
属性 System.Web.Http
在处理程序上或在处理程序名称前加上动词。
希望对您有所帮助!