如何在web api中传递HttpContent类型的参数?

时间:2016-12-23 06:48:38

标签: api web httpcontent

后面的故事是我有一个web api,它只是作为调用外部服务的网关。原因是我不想将真实的业务API暴露给外部服务。因此,在此网关控制器中,它只是从业务API接收信息,调用外部服务并将响应返回给客户端,即客户端,即业务API。 在我的网关控制器中,我有一个POST操作,它采用HttpContent类型的参数,如下所示:

[Route("api/test")]
    public void Test(HttpContent content)
    {
    }

但是,网络API基础结构不知道如何序列化和反序列化HttpContent类型。有没有办法支持我的方案?感谢。

1 个答案:

答案 0 :(得分:0)

在任何控制器的处理程序中访问请求的内容是很自然的。只需在里面拨打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);
    }
}

BTW,假设您正在根据您所说的创建REST API控制器,请不要忘记使用[Http<REST_verb>]中的System.Web.Http属性来指示此处理程序映射到的动词。处理程序或通过动词前缀处理程序名称。

希望有所帮助!