我是asp.net web api的新手。只是从这个网址http://www.c-sharpcorner.com/article/remote-bind-kendo-grid-using-angular-js-and-Asp-Net-web-api/
上阅读关于网络API的文章[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的列表操作?
请详细讨论。感谢
答案 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"));
但邮递员的结果不同,如用户发布的图片所示。因此,某些内容与文章/图片和示例代码断开连接。