Zoeken…


Invoering

Zoals de naam al doet vermoeden, gebruikt dit attributen voor de route. Dit geeft de gebruiker meer controle over de URI's in de WebAPI. U kunt bijvoorbeeld hiërarchieën van de resource beschrijven. De eerdere 'conventionele routing' wordt echter volledig ondersteund. Gebruikers kunnen ook een combinatie van beide hebben.

Syntaxis

  • [RoutePrefix ("api / books")] - voor controller-klasse
  • [Route ("getById")] - voor acties
  • [Route ("~ / api / auteurs / {authorId: int} / books")] - voor het negeren van het routeprefix

parameters

Parameternaam Details
RoutePrefix kenmerk aan de controllerklasse. alle gebruikelijke URL-voorvoegsels in acties worden hier geknuppeld. neemt string als invoer
Route kenmerk aan de controlleracties. aan elke actie is een route gekoppeld (niet noodzakelijk)
Route ( "~ / api /") dit vervangt het routevoorvoegsel

Opmerkingen

Momenteel heeft Attribute Routes geen Controller specific Message Handlers . Omdat er op het moment van aangifte geen manier is om aan te geven welke handler voor welke route moet worden uitgevoerd. Dit is mogelijk in Conventional Routing .

Basic Attribute Routing

Voeg eenvoudig een kenmerk toe aan de controlleractie

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

dit wordt opgevraagd als /product/1/customer en productId=1 wordt naar de controlleractie verzonden.

Zorg ervoor dat die binnen '{}' en de actieparameter hetzelfde zijn. productId in dit geval.

voordat u dit gebruikt, moet u opgeven dat u Attribute Routing gebruikt door:

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

Kenmerk routevoorvoegsel

In gevallen waarin u een gemeenschappelijk gedeelte van de route nodig hebt voor alle routes binnen een controller, RoutePrefix kenmerk RoutePrefix gebruikt.

In het onderstaande voorbeeld is een deel van de code api / studenten gebruikelijk en daarom kunnen we RoutePrefix definiëren en vermijden het herhaaldelijk te gebruiken.

[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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow