ホームページ  >  記事  >  バックエンド開発  >  webapi フレームワークの作成の始まり

webapi フレームワークの作成の始まり

零下一度
零下一度オリジナル
2018-05-22 10:40:573912ブラウズ

ある程度学習すると、コードの根底にあるものをより深く理解したくなり、独自のフレームワークを持ちたくなります。 もちろん、これはブロガーにも当てはまります。この記事は、webapi フレームワークの作成の始まりとなる可能性があります。 MVC フレームワークを学習したことがある方は、MVC フレームワークのルーティング MvcRouteHandler が IRouteHandler を実装してルーティングを実装していることがわかります。IRouteHandler は 1 つのオブジェクト (IHttpHandler) を返すだけでよく、IHttphandler は http リクエストを処理します。うれしいことに、webapi、ルーティング、リクエスト処理の作成の中核となるものがすでに揃っていることがわかりました。おそらく、このシリーズの記事では、これら 2 つが何であるかについては詳しく説明しませんが、興味のある友人は自分で学ぶことができ、.net でのネットワーク リクエストの処理を理解するのに大いに役立ちます。

言うことはあまりないので、直接始めましょう

完全に空のasp.net Webプロジェクトを直接作成します

何もチェックしません。

次に、 IRouteHandler から継承した BaseRouteHandler (実装) を追加しました。コードは次のとおりです

 public class BaseRouteHandler:IRouteHandler
    {
        public IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            return new BaseHttpHandler();
        }
    }

自分で書いた BaseHttphandler が返されたことがわかりました

新しい BaseHttpHandler を作成して IHttpHandler を実装します、それは価値があります セッションを処理するためにこの Handler が必要な場合は、IRequiresSessionState を継承するだけでよいことに注意してください。このインターフェイスは単なるタグであり、実装は必要ありません

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();
        }
    }

IHttpHander には 2 つしかありません。1 つは IsResuable です。 MSDN にある IsReusable 属性 このように説明されています: 他のリクエストが IHttpHandler インスタンスを使用できるかどうかを示す値を取得します。つまり、後続の Http リクエストは、このインターフェイスを実装するクラスのインスタンスを引き続き使用できます。これは、この Handler を継承する必要がなくなったため、これを false に設定します。これは、特定のリクエストを処理する HttpContext です。 http リクエストのパラメータを使用すれば、コンテキスト データを処理するだけで済みます。

アクセスする前に、ルートを登録する必要があります

プログラムにグローバルグローバルアプリケーションクラスを追加し、Application_Startメソッド以外のメソッドをすべて削除して、次のコードを書きます

 public class Global : System.Web.HttpApplication
    {
        protected void Application_Start(object sender, EventArgs e)
        {
            RouteTable.Routes.Add(new Route("api", new BaseRouteHandler()));
        }
    }

この時点で、プロジェクトは正常に動作しています 実行されているので、不安そうにコンパイルして実行します、アドレスを入力してください

注、ルートは API に登録されているため、プロジェクトのアドレスバーの後に /api ルートを追加することで、通常リクエストできますカスタマイズされた Inside HttpRouteHandler。

ということで、最も基本的なポイントが 3 つあることが分かりました:

1. IRouterHandler を実装する、

2. IHttpHandler を実装する、

3. ルーティングを登録する

かゆいところに手が届くなら、自分で Frame it を実装してみよう!

続きます。 。 。

以上がwebapi フレームワークの作成の始まりの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。