Maison > Article > développement back-end > Fonction de rappel en js pour implémenter un serveur http
Le contenu partagé avec vous dans cet article concerne la fonction de rappel dans js pour implémenter un serveur http. Le contenu est très détaillé. Examinons ensuite le contenu spécifique. J'espère que cela pourra aider tout le monde.
var http = require('http'); // 使用http模块 http.createServer ( function (request, response) { response.writeHead(200, {'Content-Type': 'text-plain'}); // http响应头部 response.end('hello word\n'); // 返回的内容 } ).listen(8124); // 监听8124端口
PS C:\Users\mingm\Desktop\test> node main.js
Visitez http :/ /127.0.0.1:8124/ Retourner le mot bonjour
Deux façons,
Lorsqu'il est utilisé comme serveur, créez un serveur http, écoutez les requêtes des clients http et renvoyez les réponses.
Lorsqu'il est utilisé en tant que client, lancez une requête client http pour obtenir une réponse du serveur
Le côté serveur est piloté par les événements Oui, la fonction de rappel lors de la création du serveur sera appelée une fois, c'est-à-dire qu'elle est basée sur les événements
L'essence de la requête http est un flux de données, composé d'un en-tête de requête et corps de la demande.
Ouvrez les outils de développement du navigateur, sélectionnez le panneau réseau, puis actualisez la page, sélectionnez à nouveau un fichier et dans la fenêtre des en-têtes, les informations d'en-tête http de la demande de fichier en cours s'affichent
D'abord la demande en-tête , suivi du corps de la requête
Lorsqu'une requête http est envoyée au serveur, elle est envoyée dans un flux de données d'un octet du début à la fin. Après avoir reçu l'en-tête complet de la requête, le serveur http créé par le module http exécute. une fonction de rappel,
var http = require('http'); // 使用http模块 http.createServer ( function (request, response) { var body = []; console.log(request.method); console.log("--------------"); console.log(request.headers); console.log("---------------"); } ).listen(8124); // 监听8124端口
PS C:\Users\mingm\Desktop\test> node main.js GET -------------- { host: '127.0.0.1:8124', connection: 'keep-alive', 'cache-control': 'max-age=0', 'upgrade-insecure-requests': '1', dnt: '1', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36', accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'zh-CN,zh;q=0.9' } ---------------
var fs = require("fs"); fs.readFile('input.txt', function (err, data) { console.log("3333"); console.log(err); console.log(data.toString()); console.log("3333"); }); console.log("程序执行结束!");
PS C:\Users\mingm\Desktop\test> node main.js 程序执行结束! 3333 null 33333333333333333333333333 3333 PS C:\Users\mingm\Desktop\test>
Lorsque vous rencontrez une opération d'E/S, sautez d'abord l'exécution et exécutez le contenu actuel. Le résultat est donc le suivant, puis le résultat de l'exécution est transmis à la dernière fonction de la liste des paramètres, donc la dernière fonction est la fonction de rappel de
var http = require('http'); http.createServer( function (request, response) { var body = []; console.log(request.method); console.log(request.headers); console.log(1111111111); console.log(body); request.on('end', function () { body = Buffer.concat(body); console.log(222222222222222); console.log(body.toString()); }); console.log(4444444444444); response.writeHead(200, {'Content-Type': 'text-plain'}); response.end('hello word\n'); console.log(55555555555); } ).listen(8124);
PS C:\Users\mingm\Desktop\test> node main.js GET { host: '127.0.0.1:8124', connection: 'keep-alive', 'cache-control': 'max-age=0', 'upgrade-insecure-requests': '1', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36', dnt: '1', accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'zh-CN,zh;q=0.9' } 1111111111 [] 4444444444444 55555555555 222222222222222 GET { host: '127.0.0.1:8124', connection: 'keep-alive', pragma: 'no-cache', 'cache-control': 'no-cache', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36', dnt: '1', accept: 'image/webp,image/apng,image/*,*/*;q=0.8', referer: 'http://127.0.0.1:8124/', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'zh-CN,zh;q=0.9' } 1111111111 [] 4444444444444 55555555555 222222222222222
Cette exécution est asynchrone. Elle est exécutée en premier sur
console.log(body);
Puisque request.on doit attendre le retour, l'instruction suivante
console.log(444);est exécuté de manière asynchrone. Renvoyez ensuite le contenu, exécutez à nouveau request.on, notifiez le résultat au dernier paramètre de la fonction, puis terminez l'exécution. Réponse httpLe serveur renvoie le corps de la requête demandé par le client au client tel quel
PS C:\Users\mingm\Desktop\test> node main.js 444444444444 22222222 33333333 555555
var http = require("http"); http.createServer(function (request, response){ console.log(444444444444); response.writeHead(200, { 'Content-Type': 'text/plain' }); // 为响应头,即原路发送给客户端 request.on( "data", function (chunk) { response.write(chunk); console.log(111111); }); console.log(22222222); request.on('end', function() {response.end();console.log(555555)}); console.log(33333333); } ).listen(8124);L'écriture est un peu brouillonneclient httple nœud envoie une requête client http
var options = { hostname: 'www.iming.info', port: 80, // 端口为80 path: '/upload', // 请求的路径 method: 'POST', // 请求的方法为post方法 headers: { 'Content-Type': 'application/x-www-form-urlencoded' // 头部信息 }, } var http = require('http'); var request = http.request(options, function (response) {}); request.write('hello word!'); request.end();Ce qui précède envoie une requête http. Recommandations associées :
analyse du code source axios comment implémenter une bibliothèque de requêtes HTTP
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!