后面的故事是我有一个web api,它只是作为调用外部服务的网关。原因是我不想将真实的业务API暴露给外部服务。因此,在此网关控制器中,它只是从业务API接收信息,调用外部服务并将响应返回给客户端,即客户端,即业务API。
在我的网关控制器中,我有一个POST操作,它采用HttpContent
类型的参数,如下所示:
[Route("api/test")]
public void Test(HttpContent content)
{
}
但是,网络API基础结构不知道如何序列化和反序列化HttpContent
类型。有没有办法支持我的方案?感谢。
答案 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
属性来指示此处理程序映射到的动词。处理程序或通过动词前缀处理程序名称。
希望有所帮助!