【发布时间】:2018-09-11 15:56:37
【问题描述】:
我试图在我的 ApiController 中配置一个方法来处理所有 POST 请求,无论路径段的数量如何,并接收始终为 json 的 post body。我已经尝试了几种通配符表和属性路由的变体,但无法使其适用于具有超过 1 个路径段的请求。
另外,我不知道如何在方法中接收整个 json 主体。
[RoutePrefix("api")]
public class MyController: ApiController
{
[HttpPost]
[Route("*")]
public string PostHandler([FromBody]string jsonBody)
{
var requestPath = Request.RequestUri.LocalPath;
return jsonBody;
}
}
【问题讨论】:
-
听起来像是 x/y 问题。你打算怎么做?
-
在不回答您的具体问题的情况下,我会注意到这是一个非常不寻常的设计,并且在所有 RESTful 方面都是苍蝇。 REST 定义了一系列资源,每个资源都位于一个给定的端点。您正在尝试为每个资源创建一个端点。在这种情况下,如果您能解释您实际尝试解决的设计问题,将会有所帮助。也许有更好的方法来完成它。
-
我理解对设计的担忧。目前只是在试验 WebApi,并将其与我已经在使用 HTTPHandlers 做的比较。
-
尝试在操作方法上将路由定义为
[Route("")]。
标签: c# asp.net-web-api asp.net-apicontroller