Le début de l'écriture d'un framework webapi

零下一度
Libérer: 2018-05-22 10:40:57
original
3924 Les gens l'ont consulté

Lorsque nous apprendrons dans une certaine mesure, nous voudrons comprendre les éléments sous-jacents du code en profondeur, et nous voudrons également avoir notre propre cadre. Bien sûr, c'est aussi le cas pour les blogueurs. Cet article peut être le début de l’écriture d’un framework webapi. Les amis qui ont étudié le framework MVC découvriront que le routage MvcRouteHandler du framework MVC implémente IRouteHandler pour implémenter notre routage, et IRouteHandler n'a besoin de renvoyer qu'un seul objet, qui est IHttpHandler, et IHttphandler gère les requêtes http. Avec joie, nous avons constaté que nous disposions déjà des éléments essentiels pour l'écriture d'une webapi, le routage et le traitement des requêtes. Peut-être que cette série d'articles n'expliquera pas en profondeur ce que sont ces deux choses, mais se concentrera sur leur utilisation. Les amis intéressés peuvent en apprendre davantage par eux-mêmes, ce qui sera d'une grande aide pour comprendre le traitement des requêtes réseau sous .net.

Sans plus tarder, commençons directement

Nous créons directement un projet web asp.net complètement vide

Décochez n'importe quoi.

Ensuite, on ajoute un BaseRouteHandler, hérité de (implémentation) IRouteHandler, le code est le suivant

 public class BaseRouteHandler:IRouteHandler
    {
        public IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            return new BaseHttpHandler();
        }
    }
Copier après la connexion

On voit qu'un BaseHttphandler, ceci est écrit par nous-mêmes

Créez un nouveau BaseHttpHandler pour implémenter IHttpHandler. Il convient de noter que si vous avez besoin de ce gestionnaire pour gérer les sessions, il vous suffit d'hériter de IRequiresSessionState. ne nécessite aucune implémentation

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();
        }
    }
Copier après la connexion

IHttpHander n'a que deux choses, l'une est IsResuable, l'attribut IsReusable, MSDN l'explique comme ceci : Obtenez une valeur qui indique si d'autres requêtes peuvent utiliser IHttpHandler exemple . C'est-à-dire que les requêtes Http ultérieures peuvent continuer à utiliser des instances de classes qui implémentent cette interface. Ici, nous la définissons sur false car nous n'avons plus besoin d'hériter de ce gestionnaire

L'autre est ProcessRequest, c'est le cas. Pour traiter des requêtes spécifiques, HttpContext contient divers paramètres de notre requête http. Il nous suffit de traiter les données de contexte.

Avant d'accéder, nous devons enregistrer l'itinéraire

Nous ajoutons une classe d'application globale globale au programme, supprimons toutes les méthodes à l'exception de la méthode Application_Start, puis écrivons le code suivant

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

À ce stade, le projet peut fonctionner normalement, nous le compilons donc et l'exécutons anxieusement, saisissons l'adresse

Remarque Oh, puisque notre route est enregistrée avec l'API, l'ajout de la route de /api après la barre d'adresse de notre projet peut envoyer des requêtes normales à notre HttpRouteHandler personnalisé.

Ainsi, nous avons appris qu'il y a trois points les plus fondamentaux :

1. Implémenter IRouterHandler,

2. Implémenter IHttpHandler,

3. Enregistrer l'itinéraire

Si vous avez des démangeaisons, alors allez mettre en œuvre votre propre framework !

A suivre. . .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal