ASP.Net Web API:关于调用url或end point url的web api动作

时间:2016-04-15 13:20:11

标签: asp.net-mvc asp.net-web-api

我是asp.net web api的新手。只是从这个网址http://www.c-sharpcorner.com/article/remote-bind-kendo-grid-using-angular-js-and-Asp-Net-web-api/

上阅读关于网络API的文章

enter image description here

现在看到这段代码

[RoutePrefix("api/EmployeeList")]  
public class EmployeeDetailsController : ApiController  
{  
    [HttpGet]  
    [Route("List")]  
    public HttpResponseMessage EmployeeList()  
    {  
        try  
        {  
            List<Employee> _emp = new List<Employee>();  
            _emp.Add(new Employee(1, "Bobb", "Ross"));  
            _emp.Add(new Employee(2, "Pradeep", "Raj"));  
            _emp.Add(new Employee(3, "Arun", "Kumar"));  
            return Request.CreateResponse(HttpStatusCode.OK, _emp, Configuration.Formatters.JsonFormatter);  
        }  
        catch (Exception ex)  
        {  
            return Request.CreateResponse(HttpStatusCode.OK, ex.Message, Configuration.Formatters.JsonFormatter);  

        }  


    }  
}  

根据我的理解,请求网址应为/api/EmployeeList/List,但如果有人查看上面的图片,则必须注意使用不同的网址api/Employee/GetEmployeeList来调用列表操作方法。所以我想知道为什么不同的url被调用List动作函数?

还不明白此网址api/Employee/GetEmployeeList在这种情况下如何工作,因为控制器名称为EmployeeDetailsController RoutePrefix 已用于解决api/EmployeeList和动作方法名称是 EmployeeList(),它已被更改为List ..........所以有人告诉我这个url api/Employee/GetEmployeeList如何调用web api的列表操作?

请详细讨论。感谢

3 个答案:

答案 0 :(得分:0)

您是否激活了AttributeRouting?如果没有,标准路由就位,您的当前属性将被忽略。

您需要在WebApi注册过程中执行此操作,如下所示:

    public static void Register(HttpConfiguration config)
    {
        // Web API routes
        config.MapHttpAttributeRoutes();

        // Other Web API configuration not shown.
    }

然后,您可以删除任何方法调用:

config.Routes.MapHttpRoute

禁用传统路由。

BTW,调用api / Employee / GetEmployeeList是有效的,因为Employee是控制器的名称,Get是动词,EmployeeList是方法的名称。

答案 1 :(得分:0)

您是否启用了属性路由?默认情况下,您可以通过添加以下代码行在webapiconfig.cs中执行此操作:

config.MapHttpAttributeRoutes();

答案 2 :(得分:0)

@ Monojit-萨卡。用户在邮递员中显示的URL也不符合代码。在代码中,这些是我们希望看到的用户:

        _emp.Add(new Employee(1, "Bobb", "Ross"));  
        _emp.Add(new Employee(2, "Pradeep", "Raj"));  
        _emp.Add(new Employee(3, "Arun", "Kumar"));  

但邮递员的结果不同,如用户发布的图片所示。因此,某些内容与文章/图片和示例代码断开连接。