집 >백엔드 개발 >C#.Net 튜토리얼 >WEB API의 ASP.NET 속성 라우팅 예제에 대한 자세한 설명
다음은 기존 MVC 라우팅입니다
rree다음과 유사한 효과의 라우팅을 구현하려면 기존 컨벤션 라우팅을 사용하는 것이 더 번거롭습니다.
config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional }, );
속성 라우팅을 사용하면 더 간단합니다.
새 WEB API 프로젝트를 생성하려면 App_Start 디렉터리에서 WebApiConfig.cs 파일을 열고 다음 코드를 추가하여 속성 라우팅 구성을 활성화하세요.
order/Miles/三只松鼠干果/2袋 order/2017/1/13
속성 라우팅은 다음과 같이 규칙 라우팅과 혼합될 수도 있습니다.
config.MapHttpAttributeRoutes();
다음과 같이 속성 라우팅을 사용하려면 메서드에 속성을 표시합니다.
public static void Register(HttpConfiguration config) { // Web API 配置和服务 // Web API 路由 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional }, constraints: new { id=@"\d+"} ); }
테스트 결과 (URL은 인코딩됩니다. 그렇지 않으면 400 오류가 보고됩니다.)
일반적으로 동일한 컨트롤러의 모든 경로는 동일한 접두사
[Route("order/{UserNickName}/{ProductName}/{count}")]로 시작됩니다.
분명히 더 귀찮은 일입니다. 따라서 [RoutePrefix] 속성을 사용하여 공개 접두사
테스트 결과
[RoutePrefix가 used ], 일부 특수 API의 경우 물결선을 사용하여 다음과 같이 라우팅 접두사를 다시 작성할 수 있습니다.
테스트 결과(동일 클래스 아래)
라우팅 접두사에는 다음과 같은 매개변수도 포함될 수 있습니다.
테스트 결과
다음과 같이 경로에 매개변수 제약 조건을 추가할 수 있습니다
테스트 결과
매개변수가 Int 유형이 아니면 경로가 일치하지 않습니다.
다음은 지원되는 몇 가지 제약 조건입니다
여러 개를 사용할 수 있습니다 제약 조건이 있지만 콜론을 사용하여
[Route("api/books")] [Route("api/books/{id:int}")] [Route("api/books")]
결과
범위 내에 없으면 일치하지 않습니다
사용자 정의 라우팅 제약 조건은 IHttpRouteConstraint 인터페이스를 구현해야 합니다. 자세한 내용은 공식
[Route("users/{id:int:length(1,3)}")] public User GetUserById(int id) { ... }
Register Constraints
public class NonZeroConstraint : IHttpRouteConstraint { public bool Match(HttpRequestMessage request, IHttpRoute route, string parameterName, IDictionary<string, object> values, HttpRouteDirection routeDirection) { object value; if (values.TryGetValue(parameterName, out value) && value != null) { long longValue; if (value is long) { longValue = (long)value; return longValue != 0; } string valueString = Convert.ToString(value, CultureInfo.InvariantCulture); if (Int64.TryParse(valueString, NumberStyles.Integer, CultureInfo.InvariantCulture, out longValue)) { return longValue != 0; } } return false; } }
Use Constraints
public static class WebApiConfig { public static void Register(HttpConfiguration config) { var constraintResolver = new DefaultInlineConstraintResolver(); constraintResolver.ConstraintMap.Add("nonzero", typeof(NonZeroConstraint)); config.MapHttpAttributeRoutes(constraintResolver); } }
를 확인하세요. URI 매개변수 및 기본값
물음표를 추가하여 경로 매개변수를 선택적 URI 매개변수로 만들 수 있습니다. 경로 매개변수가 선택사항인 경우 메소드 매개변수에 대한 기본값을 정의해야 합니다.
[Route("{id:nonzero}")] public HttpResponseMessage GetNonZero(int id) { ... }
또는 라우팅 템플릿에서 기본값
public class BooksController : ApiController { [Route("api/books/locale/{lcid:int?}")] public IEnumerable<Book> GetBooksByLocale(int lcid = 1033) { ... } }를 정의하세요.
위 내용은 WEB API의 ASP.NET 속성 라우팅 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!