0

Ich bin ziemlich neu in API Routing und versuche, mich mit diesem Problem zu befassen.Web API 2 Routing

Nehmen wir an, wir haben eine Liste von Schokoriegel.

ich todo möchte folgendes:

ListAllCandyBars  --- api/Candy 
ListCandyBar via ID --- api/Candy/10 
ListAllChocBars  --- api/Candy/Choc 

Deshalb haben wir 3 GETS

Standard Get Get mit ID Aktion

Holen Wie würden Sie die Routen und Klasse einzurichten erwarten . Ich bin nur in der Lage, entweder ListAllCandyBars und ListCandyBar über ID oder ListAllCandyBars und ListAllChocBars arbeiten zu können.

Dies ist meine aktuelle Route:

config.Routes.MapHttpRoute(
      name: "WithActionApi", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional, action = RouteParameter.Optional } 
     ); 

etwas wie folgt verwenden:

public class DefaultController : ApiController 
    { 
     // GET: api/Default 
     public IEnumerable<string> Get() 
     { 
      return new string[] { "value1", "value2" }; 
     } 

     // GET: api/Default/5 
     public string Get(int id) 
     { 
      return "value"; 
     } 

     // GET: api/Default/ListSub 
     public string ListSub(int id) 
     { 
      return "value"; 
     } 

     // POST: api/Default 
     public void Post([FromBody]string value) 
     { 
     } 

     // PUT: api/Default/5 
     public void Put(int id, [FromBody]string value) 
     { 
     } 

     // DELETE: api/Default/5 
     public void Delete(int id) 
     { 
     } 
    } 

freuen uns, von Ihnen zu hören und immer vorbei an diesem kleinen Problem. PS: Es könnte mein Verständnis von Controllern sein. Sollte ich einen anderen Controller für ListAllChocBars haben?

Grüße

James

+4

Verwenden Sie Routenattribute, anstatt sie in der Konfig zu mappen –

+0

Das funktioniert ein Leckerbissen dank. – WJProctor

Antwort

0

Ich war über komplizieren und für Weg gehen Attribute nur dann wirklich gut funktioniert.