【发布时间】:2016-04-15 13:20:10
【问题描述】:
我是 asp.net web api 的新手。刚刚从这个 url http://www.c-sharpcorner.com/article/remote-bind-kendo-grid-using-angular-js-and-Asp-Net-web-api/阅读了一篇关于 web 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);
}
}
}
根据我的理解,请求的 url 应该是 /api/EmployeeList/List,但是如果有人看上面的图片,那么必须注意到不同的 url api/Employee/GetEmployeeList 正在用于调用列表操作方法。所以我只想知道为什么发出不同的 url 来调用 List 操作函数?
也不明白这个 url api/Employee/GetEmployeeList 在这种情况下如何工作,因为控制器名称是 EmployeeDetailsController 但 RoutePrefix 已用于解决它 api/EmployeeList 并且操作方法名称是 EmployeeList() 已更改为 List ......所以有人告诉我这个 url api/Employee/GetEmployeeList 如何调用 web api 的列表操作?
请详细讨论。谢谢
【问题讨论】:
-
控制器名称是 EmployeeDetails 那么我怎么能用 Employee 之类的关键字指向这个控制器......我在这里很困惑?
-
动作名称是 EmployeeList 那么我怎么能像 GetEmployeeList 一样访问它呢?
-
你配置属性路由了吗?它可能未配置,因此使用基于约定的路由,例如,如果使用 HttpGet,则 Get 是操作名称的前缀,因此是 GetEmployeeList。建议您阅读更多关于 web api 2 中路由的内容,这里有一个链接asp.net/web-api/overview/web-api-routing-and-actions/…
-
您的代码和您的 POSTMAN 响应不匹配,返回的用户名不同。你忘了告诉我们一些事情。您的应用程序是否在 Visual Studio 中编译?您是否调用了正确的端点?您确定您没有另一个名为 Employee 的 Controller 吗?也许你重命名了你的控制器并且没有重新编译。
-
如果你看我的帖子,那么一定会意识到我说我正在学习 web api,并且我还提到了我正在阅读 web api 示例代码的 url。我对邮递员发布的端点网址感到困惑,这就是为什么我问为什么作者在邮递员中使用不同的网址?
标签: asp.net-mvc asp.net-web-api