将所有 POST 请求路由到单个 ApiController

Posted

技术标签:

【中文标题】将所有 POST 请求路由到单个 ApiController【英文标题】:Route all POST requests to a single ApiController 【发布时间】:2012-04-03 13:06:51 【问题描述】:

我希望将所有 PUT 和 POST 请求反序列化为适当的命令并通过消息总线发送到端点。我宁愿每个命令都没有 ApiController 也没有实现通用 Put 方法的基本控制器。

那么,是否可以将对给定动词的所有请求路由到单个 ApiController 或其他适当的东西,并且仍然受益于模型绑定?

【问题讨论】:

【参考方案1】:

听起来您正在寻找的是 [HttpGet] 和 [HttpPost] 控制器属性。这允许您创建两个因该属性不同而不同的方法。例如:

[HttpGet]
public ActionResult Index(int viewId)

    return View(new IndexViewModel(viewId));


[HttpPost]
public ActionResult Index(IndexViewModel model)

    model.DoSomethingUsefulWithPostData();
    return View(model);

第一个方法将接受一个查询字符串参数并从中构造一个视图模型。第二个将在表单发布时调用并重建模型,包括模型中来自 POST 本身的任何值。

【讨论】:

以上是关于将所有 POST 请求路由到单个 ApiController的主要内容,如果未能解决你的问题,请参考以下文章

Web Api 属性路由与 POST 请求不匹配

C'ant post 使用 Angular http 将帖子发送到 api 路由

NodeJShttp请求获取get和post参数

Express起步 - 路由基础 - 请求对象request - 响应对象response - 增删改查API案例

将所有 HTTP 和 HTTPS 请求重定向到单个 HTTPS URL

如何在单个路由中解组 POST 参数和 JSON 正文?