12

के लिए और अधिक MapHttpRoutes बनाने के लिए मैं अपने एपीआई एटीएम के लिए 2 एपीआई मार्गों है, लेकिन मैं और अधिक जोड़ना चाहते हैं, और जिस तरह से मैं इसे कर रहा हूँ यह, एक दूसरे के ऊपर लिख रहा है तो कोड मैं चिपकाया में, केवल CreateUser मार्ग काम करता है।कैसे MVC 4 एपीआई

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    routes.MapHttpRoute(
     name: "CreateUser", 
     routeTemplate: "api/{controller}/{cUser}", 
     defaults: new 
     { 
      controller = "User", 
      action = "CreateUser", 
      cUser = RouteParameter.Optional 
     }); 
    routes.MapHttpRoute(
     name: "AllGames", 
     routeTemplate: "api/{controller}/{playerId}", 
     defaults: new 
     { 
      controller = "Game", 
      action = "GetAllGames", 
      playerId = RouteParameter.Optional 
     }); 
    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new 
     { 
      controller = "Home", 
      action = "Index", 
      id = UrlParameter.Optional 
     }); 
} 

उत्तर

17

मेरा मानना ​​है कि "CreateUser" मार्ग में पैटर्न api/{controller}/{cUser} इसकी अधिक सामान्य पैटर्न की वजह से नियंत्रक कार्यों के बाकी के साथ मिलान किया जाता है। "उपयोगकर्ता" (एपीआई/प्रयोक्ता/{cUser}) और "खेल" (एपीआई/खेल/{playerId}) के रूप में मार्गों में विशिष्ट नियंत्रक नाम का प्रयोग करें। अधिक विशिष्ट मार्ग शीर्ष पर और नीचे सामान्य और अधिक सामान्य होना चाहिए।

routes.MapHttpRoute(
    name: "CreateUser", 
    routeTemplate: "api/User/{cUser}", 
    defaults: new 
    { 
     controller = "User", 
     action = "CreateUser", 
     cUser = RouteParameter.Optional 
    } 
); 

routes.MapHttpRoute(
    name: "AllGames", 
    routeTemplate: "api/Game/{playerId}", 
    defaults: new 
    { 
     controller = "Game", 
     action = "GetAllGames", 
     playerId = RouteParameter.Optional 
    } 
); 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^