我必须开发一个REST API,该API必须处理 POST 请求(从请求的正文中获取有效负载),并同时使用URI参数。
在我的控制器类中,我有这样的东西:
public class MailProtocolloController : ApiController
{
[SharePointContextWebAPIFilter]
[HttpPost]
[ActionName("protocollo/mail")]
public IHttpActionResult InviaAlProtocollo(XXX)
{
return Ok("TEST");
}
}
我的问题是:
如您所见,我正在使用 ActionName 批注指定此控制器方法处理的URL路径。如何在此 ActionName 批注中指定URI参数? (我可以吗?)它必须处理以下内容: protocollo / mail / {id}
必须为此控制器方法指定哪些输入参数?一个用于从URI中检索到的ID(一个字符串)和一个用于请求有效负载的对象?还是可以在方法内部检索此有效载荷?
如何实现这种行为?
答案 0 :(得分:1)
尝试一下:
public class MailProtocolloController : ApiController
{
[SharePointContextWebAPIFilter]
[HttpPost]
[Route("protocollo/mail/{id}")]
public IHttpActionResult InviaAlProtocollo([FromUri] string id, [FromBody] string context)
{
return Ok("TEST");
}
}
答案 1 :(得分:1)
您可以使用RouteAttribute
定义路由映射,在其中可以使用参数占位符从url路径获取那些占位符。
如果您用FromBody
属性修饰代表正文的参数,也可以获取请求的正文:
[RoutePrefix("protocollo")]
public class MailProtocolloController : ApiController
{
[SharePointContextWebAPIFilter]
[HttpPost]
[Route("mail/{id}")]
public IHttpActionResult InviaAlProtocollo(string id, [FromBody]string body)
{
return Ok("TEST");
}
}