2014-10-10 33 views
0

GET/BusNumber/12/seatnumbers - 检索seatnumbers的列表BusNumber#12
GET/BusNumber/12/seatnumbers/5 - 获取座#5 BusNumber#12
POST/BusNumber/12/seatnumbers - 在BusNumber#12中创建新座位
PUT/BusNumber/12/seatnumbers/5 - ......................
PATCH/BusNumber/12/seatnumbers/5 - ..............................
DELETE/BusNumber/12/seatnumbers/5 - ............................如何创建这些URL

如何在ASP.Net Web中创建上述类型的URL API 2?

它必须通过路由器配置完成?如何在不影响默认路由器配置的情况下添加新路由器?我们如何在控制器方法内使用这些值?

谢谢 埃里克

回答

0

在网页API 2,你可以使用动作路由属性和创造这样的事情

[Route("Buses/{busNumber}/seatNumbers")] 
public IEnumerable<Bus> GetSeatNumbersByBusNumber(int busNumber) { ... } 

[Route("Buses/{busNumber}/seats/{seatNumber}")] 
public IEnumerable<Seat> GetSeatsByBusAndSeatNumber(int busNumber, int seatNumber) { ... } 

你可以做的PUT,POST类似,等

有关Web API 2中的路由属性的更多信息是here.

要启用路由属性,您必须et up Web API Config像这样

public static void Register(HttpConfiguration config) 
    { 
     // Attribute routing. 
     config.MapHttpAttributeRoutes(); 

     // Convention-based routing. 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 
+0

我认为这是答案。出于某种原因,我无法使属性路由工作。现在可能是一个不同的问题。 – 2014-10-13 17:36:29