수색…


소개

이름에서 알 수 있듯이이 속성을 사용하여 경로를 지정합니다. 이를 통해 사용자는 WebAPI의 URI를보다 잘 제어 할 수 있습니다. 예를 들어, 자원의 계층을 설명 할 수 있습니다. 그러나 초기 'Conventional Routing'은 완전히 지원됩니다. 사용자는 둘 다 혼합 할 수 있습니다.

통사론

  • [RoutePrefix ( "api / books")] - 컨트롤러 클래스 용
  • [Route ( "getById")] - 액션
  • [Route ( "~ / api / authors / {authorId : int} / books")] - 경로 접두사 무시

매개 변수

매개 변수 이름 세부
RoutePrefix 속성을 컨트롤러 클래스에 추가하십시오. 액션에있는 모든 공통 URL 접두어가 여기에 있습니다. 문자열을 입력으로받습니다.
노선 속성을 컨트롤러 동작에 추가합니다. 각 행동에는 반드시 (반드시 그런 것은 아님)
경로 (~ / api /) 이것은 Route Prefix를 오버라이드한다.

비고

현재, Attribute Routes에는 Controller specific Message Handlers 가 없습니다. 선언시에 어떤 경로에 대해 실행할 핸들러를 지정하는 방법이 없기 때문입니다. 이는 Conventional Routing 에서 가능합니다.

기본 속성 라우팅

컨트롤러 액션에 속성을 추가하기 만하면됩니다.

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

/product/1/customer 로 쿼리되고 productId=1 이 컨트롤러 작업으로 전송됩니다.

'{}'내의 매개 변수와 조치 매개 변수가 동일한 지 확인하십시오. 이 경우 productId .

이것을 사용하기 전에 다음을 통해 속성 라우팅을 사용하도록 지정해야합니다.

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

경로 접두사 속성

컨트롤러 내의 모든 경로에 대해 공통 경로 부분이 필요한 경우에는 RoutePrefix 특성이 사용됩니다.

아래의 예에서 코드의 api / students 부분은 공통적이므로 RoutePrefix 를 정의하여 반복적으로 사용하는 것을 피할 수 있습니다.

[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
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow