gpt4 book ai didi

c# - 是否可以在同一路由中使用 2 种方法(GET 和 POST)?

转载 作者:可可西里 更新时间:2023-11-01 16:25:35 24 4
gpt4 key购买 nike

我想在我的 Controller 中有 2 个方法,它们具有相同的路由,但仅在 HTTP 方法上有所不同。具体来说,如果我的路线看起来像

routes.MapRoute(
name: "DataRoute",
url: "Sample/{user}/{id}/",
defaults: new { controller = "Sample", action = "--not sure--", user = "", id = "" }
);

我的 Controller 中有 2 个方法:

[HttpGet]
public void ViewData(string user, string id)

[HttpPost]
public void SetData(string user, string id)

如果我获取 Sample/a/b,则期望的行为是调用 ViewData(),如果我 POST 到,则调用 SetData() Sample/a/b,相同的 URL。

我知道我可以只创建 2 个单独的路由,但出于设计原因,我希望有一个路由仅通过 GETPOST 来区分。有没有一种方法可以配置路由或 Controller 来执行此操作而无需创建新路由?

最佳答案

使用属性路由,您应该能够使用不同的方法设置相同的路由。

[RoutePrefix("Sample")]
public class SampleController : Controller {
//eg GET Sample/a/b
[HttpGet]
[Route("{user}/{id}")]
public void ViewData(string user, string id) { ... }

//eg POST Sample/a/b
[HttpPost]
[Route("{user}/{id}")]
public void SetData(string user, string id) { ... }
}

不要忘记在基于约定的路由之前启用属性路由

routes.MapMvcAttributeRoutes();

您应该编辑 SetData 方法以从 POST 正文中获取一些负载。

public void SetData(string user, string id, MyCustomObject data) { ... }

关于c# - 是否可以在同一路由中使用 2 种方法(GET 和 POST)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39007607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com