Ricerca…


introduzione

Come suggerisce il nome, questo utilizza gli attributi per il percorso. Ciò fornisce all'utente un maggiore controllo sull'URI nella WebAPI. Ad esempio, è possibile descrivere le gerarchie della risorsa. Tuttavia, il precedente "routing convenzionale" è pienamente supportato. Gli utenti possono avere una combinazione di entrambi.

Sintassi

  • [RoutePrefix ("api / books")] - per la classe controller
  • [Route ("getById")] - per le azioni
  • [Route ("~ / api / authors / {authorId: int} / books")] - per il prefisso del percorso prioritario

Parametri

Nome del parametro Dettagli
RoutePrefix attributo alla classe controller. tutti i prefissi di url comuni nelle azioni sono bastonati qui. prende la stringa come input
Itinerario attributo alle azioni del controller. ogni azione avrà una rotta assunta con (non necessariamente)
Rotta ( "~ / api /") questo sovrascrive il prefisso del percorso

Osservazioni

Attualmente, Attribute Routes non ha Controller specific Message Handlers . Poiché non è possibile specificare quale gestore eseguire per quale percorso al momento della dichiarazione. Questo è possibile nel Conventional Routing .

Routing degli attributi di base

Basta aggiungere un attributo all'azione del controller

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

questo verrà interrogato come /product/1/customer e productId=1 verrà inviato all'azione del controller.

Assicurati che quello all'interno di "{}" e il parametro di azione siano gli stessi. productId in questo caso.

prima di usare questo, devi specificare che stai usando l'instradamento degli attributi per:

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

Attributo prefisso di percorso

Nei casi in cui è necessaria una porzione comune della rotta per tutte le rotte all'interno di un controller, viene utilizzato l'attributo RoutePrefix .

Nell'esempio seguente, la parte di codice api / studenti è comune e quindi è possibile definire RoutePrefix ed evitare di utilizzarlo ripetutamente.

[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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow