2016-05-03 6 views
3

ich ein Bussiness Entity haben, die von 2 Schlüssel erkannt wird, zum Beispiel:mehrere Id-Parameter auf Web Api GET oder DELETE Anfrage

class UserItem { 
    [Key] 
    [Column(Order = 1)] 
    public string UserId {get;set;} 
    [Key] 
    [Column(Order = 2)] 
    public string ItemName {get; set;} 
    public int Count {get; set;}  
} 

nun eine ASP.NET Web-API, wie kann ich eine machen HTTP GET oder HTTP DELETE um mehrere Parameter zu akzeptieren? Derzeit erzeugt die Standardvorlage akzeptieren nur 1 Schlüssel:

class ItemController : ApiController { 
    ..... 

    //api/item/[key] 
    [HttpGet] 
    [ResponseType(typeof(UserItem))] 
    public async Task<IHttpActionResult> GetUserItem(string id) 
    { 
     UserItem item = await db.useritems.FindAsync(id); 
     ...... 
    } 

    ...... 
} 

db ist mein Datacontext, ich bin mit EntityFramework 6 mit ASP.NET Web Api 2

Antwort

5

Karte Ihre Route wie unten können Sie zwei Parameter zu übergeben, können Sie mehr als zwei Parameter

[HttpGet] 
    [Route("api/item/{id1}/{id2}")] 
    [ResponseType(typeof(UserItem))] 
    public async Task<IHttpActionResult> GetUserItem(string id1, string id2) 
    { 
     UserItem item = await db.useritems.FindAsync(id1); 
     ...... 
    } 
+0

danke für schnelle Antwort! – rocketspacer

+0

Sie sind willkommen – Mostafiz

1

Ich habe von der mehrere Parameter senden konnten Standard-WebApi-Setup.

Just do

Public async Task<IHttpActionResult> GetUserItem(string UserId, string ItemName) 
{ 
    UserItem item = await db.useritems.FirstOrDefault(c=>.UserId==UserId && c.ItemName==ItemName); 
} 

Wo sind Sie in Probleme laufen?

+0

diese Weise hinzufügen und Sie verbrauchen sie wie „api/item? UserId = ... & ItemName =. .." Ja ? – rocketspacer

+0

Was ist, wenn HTTP Get und HTTP Delete dieselben Parameter haben? – rocketspacer

+1

Korrigieren Sie zuerst. Und was ist der Grund, um 2 eindeutige Schlüssel in einem Delete/Get zu übergeben? Kannst du nicht den richtigen Gegenstand mit nur 1 Schlüssel finden? aber wenn Sie müssen, könnten Sie einfach einen Parameter der Löschmethode hinzufügen, um sie anders zu machen, wie bool = true – Dylan

Verwandte Themen