이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 16017|회답: 1

[.NET 코어] ASP.NET 코어에서 맞춤형 라우팅 제약 조건 구현

[링크 복사]
게시됨 2019. 5. 6. 오전 9:30:30 | | |
라우팅 제약 조건

코어 ASP.NET 라우팅 템플릿을 정의하여 URL에 변수를 전달할 수 있고, 변수에 대한 기본값, 선택사항, 제약 조건을 제공할 수 있습니다.

이 제약 조건은 지정된 제약 조건 이름을 속성 경로에 추가하여 사용되며, 다음과 같이 사용됩니다:

프레임워크 내에 이미 제공된 몇 가지 제약 조건은 다음과 같습니다:

제약 조건
본보기
경기 예시
설명
지능
{id:int}
123456789, -123456789
임의의 정수 일치
{active:bool}
참, 거짓
참 또는 거짓 일치 (대문자 구분)
데이트 타임
{dob:datetime}
2016-12-31, 2016-12-31 오후 7:32
유효한 DateTime 값과 일치함 (고정 지역성 기준 - 경고 참조)
십진법
{가격:십진수}
49.99, -1,000.01
유효한 소수점 값과 일치함 (고정 지역성 - 경고 참조)
더블
{무게:두 배}
1.234, -1,001.01e8
유효한 이중 값과 일치함 (고정 지역성 기준 - 경고 참조)
플로트
{무게:float}
1.234, -1,001.01e8
유효한 float 값과 일치함 (고정 지역성 - 경고 참조)
가이드
{id:guid}
CD2C1638-1638-72D5-1638-DEADBEEF1638, {CD2C1638-1638-72D5-1638-DEADBEEF1638}
유효한 GUID 값과 일치함
길게
{틱:롱}
123456789, -123456789
유효한 롱 값과 일치합니다
minlength(값)
{사용자명:minlength(4)}
문자열은 최소 4자 이상이어야 합니다
Maxlength(값)
{파일명:maxlength(8)}
리처드
문자열은 8자를 초과해서는 안 됩니다
길이(길이)
{filename:length(12)}
somefile.txt
문자열은 정확히 12자여야 합니다
길이(최소, 최대)
{filename:length(8,16)}
somefile.txt
문자열은 최소 8자, 최대 16자여야 합니다
min(값)
{나이:min(18)}
19
정수 값은 최소 18이어야 합니다
max(value)
{나이:맥스(120)}
91
정수 값은 120을 초과해서는 안 됩니다
범위(최소, 최대)
{연령:범위(18,120)}
91
정수 값은 최소 18이어야 하며 120을 넘지 않아야 합니다
알파
{name:alpha}
문자열은 하나 이상의 알파벳 문자(a-z, 대문자 구분)로 구성되어야 합니다.
regex(표현식)
{ssn:regex(^\d{{3}}-\d{{2}}-\d{{4}}$)}
123-45-6789
문자열은 정규 표현식과 일치해야 합니다(정규 표현식 정의에 관한 팁 참조)
필수
{name:required}
URL 생성 시 비파라미터 값의 존재를 강제하는 데 사용됩니다


내장된 제약 조건은 대부분의 일반적인 사용 사례에 효과적이지만, 때로는 원하는 효과를 맞춤화해야 할 때도 있습니다.
맞춤형 라우팅 제약

사용자 지정 제약은 IRouteConstraint 인터페이스를 구현한 후 네 개의 매개변수가 있는 Match 메서드를 과부하하는 것입니다.

첫 번째 매개변수인 httpContext는 현재 요청의 컨텍스트입니다

두 번째 매개변수인 경로는 현재 제약 조건이 속하는 경로입니다

세 번째 매개변수인 routeKey는 현재 검사 중인 변수의 이름으로, 예를 들어 문서 시작 부분의 예시에서 id가 있습니다
네 번째 매개변수 값은 현재 URL이 일치하는 사전 값으로, 예를 들어 문서 시작 부분의 예시 경로와 같습니다. URL이 users/1이라면 키 = id , value = 1인 사전이 존재합니다. 물론 컨트롤러, 액션 등 다른 변수들에 대한 값도 있습니다.

다섯 번째 매개변수인 routeDirection은 URL이 웹에서 요청되었는지 아니면 Url.Action과 같은 메서드에 의해 생성되는지 나타내는 열거된 값입니다.

예를 들어, 경로가 전달하는 매개변수가 지정된 열거 값이어야 한다는 제약 조건을 정의하고자 합니다.

먼저 열거기를 정의해 봅시다:


그 다음 제약 조건을 정의합니다:

Startup.cs에서 ConfigureServices 메서드에 사용자 지정 제약 조건을 추가하세요:
경로에 대한 제약 조건을 사용하기:

(WebApplicationTest가 현재 네임스페이스입니다)


{id:int:min(2)} 경로는 min(2)를 사용해야 하며, 그렇지 않으면 id = 0 또는 id = 1에 대해 충돌이 발생합니다.

프로그램을 실행하고 경로가 api/test/0, api/test/1, api/test/true, api/test/false일 때 맞춤 제약 조건을 맞추세요.

경로가 api/test/{정수 2보다 큰} 경우, 두 번째 경로와 일치합니다.

다른 경우들은 세 번째 경로와 일치합니다.

결론

라우팅 제약은 일부 상황에서 매우 유용한 기능으로, 컨트롤러의 검사 매개변수를 줄일 수 있고, 부분 매개변수 검증 기능은 선언적 조정을 통해 구현할 수 있고, 일부 중복 검사는 공개 사용을 위해 제약으로 추출할 수 있습니다.

제약 조건의 생성자는 주입할 수 있어 매우 확장성이 높으며, 일부 매개변수 검증은 데이터베이스를 쿼리하여 수행할 수 있습니다.

공식 웹사이트에서는 라우팅 제약에 대해 간략히 언급할 뿐이며, 이 글에서는 라우팅 제약 조건의 구체적인 예시를 제공합니다.





이전의:제로 파운데이션 C# (풀 컬러 버전) 투모로우 테크놀로지
다음:ASP.NET Core – Razor View Import Usage Description
 집주인| 게시됨 2019. 5. 6. 오전 9:32:15 |
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com