Skip to main content
 首页 » 编程设计

c#之如何在 Web API 2 Controller 中放置多个 GET 方法

2024年01月31日22mfryf

我正在做一个 Web API 2 应用程序,我有一个名为 NCT_ProcessSettings 的 Controller ,并且我已经有两个 GET 方法,如下所示。

1. public IEnumerable<Process_Settings> Get() 
2. public HttpResponseMessage Get(int id) 

现在我想要第三个,如下所示(与第一个相同,但在内部我将编写不同的逻辑)。

3. public IEnumerable<Process_Settings> Get() //Compiler will confuse which to pick? 

我试过如下。

[HttpGet] 
[Route("GetGlobalSettings")] 
public IEnumerable<NCT_Process_Settings> GetGlobalSettings() 
{ 
    return entityObject.NCT_Process_Settings.Where(c => c.project_id == 0).ToList(); 
} 

下面是我调用 api 的 angularcode。

 var url = '/api/NCT_ProcessSettings/GetGlobalSettings'; 

我可以知道如何解决这个问题吗?任何帮助将不胜感激?

请您参考如下方法:

在基于约定的路由之前在 WebApiConfig.cs 中启用属性路由。

config.MapHttpAttributeRoutes(); 

接下来更新 Controller 以使用路由属性。 (注意路由前缀)

[RoutePrefix("api/NCT_ProcessSettings")] 
public class NCT_ProcessSettingsController : ApiController { 
 
    //GET api/NCT_ProcessSettings 
    [HttpGet] 
    [Route("")] 
    public IEnumerable<Process_Settings> Get() { ... } 
 
    //GET api/NCT_ProcessSettings/5 
    [HttpGet] 
    [Route("{id:int}")] 
    public HttpResponseMessage Get(int id) { ... } 
 
    //GET api/NCT_ProcessSettings/GetGlobalSettings 
    [HttpGet] 
    [Route("GetGlobalSettings")] 
    public IEnumerable<NCT_Process_Settings> GetGlobalSettings() { ... } 
 
} 

在此处阅读更多文档 Attribute Routing in ASP.NET Web API 2