우리가 어느 정도 학습하면 코드의 기본 사항에 대해 더 깊이 이해하고 싶게 되며, 우리 자신만의 프레임워크도 갖고 싶어집니다. 물론 이는 블로거의 경우에도 마찬가지입니다. 이 글은 webapi 프레임워크 작성의 시작이 될 수 있습니다. MVC 프레임워크를 연구한 친구들은 MVC 프레임워크의 라우팅 MvcRouteHandler가 라우팅을 구현하기 위해 IRouteHandler를 구현하고 IRouteHandler는 IHttpHandler라는 하나의 개체만 반환하면 되며 IHttphandler는 http 요청을 처리한다는 것을 알게 될 것입니다. 기쁘게도 우리는 webapi 작성, 라우팅 및 요청 처리를 위한 핵심 사항을 이미 갖추고 있다는 것을 알게 되었습니다. 아마도 이 일련의 기사에서는 이 두 가지가 무엇인지 깊이 설명하지 않고 이를 사용하는 데 중점을 둘 것입니다. 관심 있는 친구가 스스로 배울 수 있으며 이는 .net에서의 네트워크 요청 처리를 이해하는 데 큰 도움이 될 것입니다.
말할 것도 없고 직접 시작해보겠습니다
완전히 빈 asp.net 웹 프로젝트를 직접 생성합니다
아무 것도 체크하지 마세요.
그런 다음 IRouteHandler에서 상속(구현)된 BaseRouteHandler를 추가했습니다. 코드는 다음과 같습니다
public class BaseRouteHandler:IRouteHandler { public IHttpHandler GetHttpHandler(RequestContext requestContext) { return new BaseHttpHandler(); } }
직접 작성한 BaseHttphandler가 반환되는 것을 확인했습니다
IHttpHandler를 구현하기 위해 새 BaseHttpHandler를 생성합니다. , 그만한 가치가 있습니다. 세션을 처리하기 위해 이 핸들러가 필요한 경우 IRequiresSessionState를 상속하면 됩니다. 이 인터페이스는 단지 표시일 뿐이며 구현이 필요하지 않습니다. IHttpHander에는 IsResuable 및 IsReusable 특성 두 가지만 있습니다. 다음과 같이 설명됩니다. 다른 요청이 IHttpHandler 인스턴스를 사용할 수 있는지 여부를 나타내는 값을 가져옵니다. 즉, 후속 Http 요청은 이 인터페이스를 구현하는 클래스의 인스턴스를 계속 사용할 수 있습니다. 여기서는 더 이상 이 핸들러를 상속할 필요가 없기 때문에 이를 false로 설정합니다. 다른 하나는 특정 요청을 처리하는 ProcessRequest입니다. http 요청의 매개변수를 사용하면 컨텍스트 데이터만 처리하면 됩니다.
접속하기 전에 경로를 등록해야 합니다
프로그램에 전역 전역 응용 프로그램 클래스를 추가하고 Application_Start 메서드를 제외한 모든 메서드를 삭제한 후 다음 코드를 작성합니다
public class BaseHttpHandler:IHttpHandler { public bool IsReusable { get { return false; } } public void ProcessRequest(HttpContext context) { var request = context.Request; var response = context.Response; var method = request.HttpMethod.ToLower(); var result = string.Empty; result = string.Format("您正在请求BaseHttpHandler,请求方式是{0},queryStr={1}", method,request.QueryString); response.ContentType = "application/json"; response.Write(result); response.End(); } }
이 시점에서 프로젝트는 정상적으로 작동 중입니다. 실행 중이므로 걱정스럽게 컴파일하고 실행해 볼까요? 주소를 입력해 주세요
참고로 저희 루트는 api에 등록되어 있으므로 프로젝트 주소창 뒤에 /api 루트를 추가하면 정상적으로 요청을 할 수 있습니다. 우리의 맞춤형 내부 HttpRouteHandler. 그래서 우리는 세 가지 가장 기본적인 사항이 있다는 것을 배웠습니다:1. IRouterHandler 구현,
2. IHttpHandler 구현,
3. 라우팅 등록
간지럽다면 직접 프레임을 구현하세요. !
계속됩니다. . .
위 내용은 webapi 프레임워크 작성의 시작의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!