Sök…


Introduktion

Som namnet antyder använder detta attribut för att ruttas. Detta ger användaren mer kontroll över URI: erna i WebAPI. Du kan till exempel beskriva resursens hierarkier. Men den tidigare "konventionella routningen" stöds fullt ut. Användare kan också ha en blandning av båda.

Syntax

  • [RoutePrefix ("api / books")] - för controller-klassen
  • [Rutt ("getById")] - för åtgärder
  • [Rutt ("~ / api / author / {authorId: int} / books")] - för att åsidosätta ruttprefix

parametrar

Parameternamn detaljer
RoutePrefix attribut till regulatorklassen. alla vanliga url-prefix i handlingar är klubbade här. tar sträng som inmatning
Rutt attribut till controller-handlingarna. varje åtgärd kommer att ha en rutt associerad med (inte nödvändigtvis)
Route ( "~ / api /") detta åsidosätter Ruttprefixet

Anmärkningar

För närvarande har attributrutor inga Controller specific Message Handlers . Det finns inget sätt att ange vilken hanterare som ska utföra för vilken rutt vid tidpunkten för deklarationen. Detta är möjligt i Conventional Routing .

Grundläggande attribut routing

Lägg bara till ett attribut till controller-handlingen

[Route("product/{productId}/customer")]
public IQueryable<Product> GetProductsByCustomer(int productId) 
{ 
    //action code goes here 
}

detta kommer att fråga som /product/1/customer och productId=1 kommer att skickas till controlleråtgärden.

Se till att den inom '{}' och åtgärdsparametern är desamma. productId i detta fall.

innan du använder detta måste du ange att du använder attributruting genom att:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();
    }
}

Ruttprefixattribut

I de fall du behöver en gemensam del av rutten för alla rutter inom en controller används RoutePrefix attributet.

I exemplet nedan är en del av koden api / studenter vanlig och så vi kan definiera RoutePrefix och undvika att använda den upprepade gånger.

[RoutePrefix("api/students")]
public class StudentController : ApiController
{
[Route("")]
public IEnumerable<Student> Get() 
{
    //action code goes here 
}

[Route("{id:int}")]
public Student Get(int id) 
{
    //action code goes here 
}

[Route("")]
public HttpResponseMessage Post(Student student) 
{
    //action code goes here 
}

}


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow