node.js学习笔记(4) http服务

简介:

Http是互联网时代使用最广泛的协议,没有之一。

Node.js内置了http模块,因此使用node.js搭建一个http服务非常简单。


一、http实例

照旧,先来一个http的"Hello world!",创建http.js文件,代码如下:


//调用http模块
var http = require('http');

var server = http.createServer();
server.on('request', function(request, response) {
    // 发送 HTTP 头部
    // HTTP 状态值: 200 : OK
    // 内容类型: text/plain
    response.writeHead(200, {'Content-Type': 'text/plain'});

    // 发送响应数据 "Hello World !"
    response.end('Hello World !');
}).listen(8000);

console.log('Http server is started.');
AI 代码解读


运行http.js:


lee@mypc ~/works/nodejs/study4 $ node http.js 
Http server is started.
AI 代码解读

这时可以看到程序打印完"Http server is started"并没有结束,而是一直占据进程(监听8000端口)。


然后我们另起一个terminal,用curl测试http服务:


lee@mypc ~/works/nodejs/study4 $ curl "http://localhost:8000"
Hello World !
AI 代码解读

成功打印出"Hello world !"


二、get请求

创建另一个文件http_get.js。

然后实现逻辑,接收到http请求后先判断request.method,如果不是GET则返回404。如果是GET请求,则用url模块获取参数,并返回接收到的参数。

代码如下:


//调用http模块
var http = require('http');
//调用url模块
var url = require('url');

var server = http.createServer();
server.on('request', function(request, response) {
    if(request.method == 'GET') {
        var params = url.parse(request.url, true).query;
        params = JSON.stringify(params);
        //服务端打印参数
        console.log('Get params:'+params);
        // 发送 HTTP 头部
        // HTTP 状态值: 200 : OK
        // 内容类型: text/plain
        response.writeHead(200, {'Content-Type': 'text/plain'});

        // 把请求参数返回给客户端
        response.end(params+'\n');
    }
    else{
        response.writeHead(404, {'Content-Type': 'text/plain'});
        response.end('Not found !\n');
    }
}).listen(8000);

console.log('Http server is started.');
AI 代码解读

运行http_get.js:


lee@mypc ~/works/nodejs/study4 $ node http_get.js 
Http server is started.
AI 代码解读


用curl测试get得到正确结果:


lee@mypc ~/works/nodejs/study4 $ curl "http://localhost:8000?id=1&name=2"
{"id":"1","name":"2"}
AI 代码解读
测试post请求则得到"Not found":


lee@mypc ~/works/nodejs/study4 $ curl -d "" "http://localhost:8000"
Not found !
AI 代码解读




三、post请求
创建一个文件http_post.js。

然后实现逻辑,接收到http请求后先判断request.method,如果不是POST则返回404。如果是POST请求,则获取http body,并返回接收到的内容。

代码如下:



//调用http模块
var http = require('http');

var server = http.createServer();
server.on('request', function(request, response) {
    if(request.method == 'POST') {
        var data_post = '';
        request.on('data', function(data){
            data_post += data;
        });
        request.on('end', function(){
            //服务端打印参数
            console.log('Get body:'+data_post);
            // 发送 HTTP 头部
            // HTTP 状态值: 200 : OK
            // 内容类型: text/plain
            response.writeHead(200, {'Content-Type': 'text/plain'});

            // 把请求参数返回给客户端
            response.end(data_post+'\n');
        })

    }
    else{
        response.writeHead(404, {'Content-Type': 'text/plain'});
        response.end('Not found !\n');
    }
}).listen(8000);

console.log('Http server is started.');
AI 代码解读

运行http_post.js:


lee@mypc ~/works/nodejs/study4 $ node http_post.js 
Http server is started.
AI 代码解读


用curl测试post得到正确结果:

lee@mypc ~/works/nodejs/study4 $ curl -d '{"username":"lee","id":1}' "http://localhost:8000"
{"username":"lee","id":1}
AI 代码解读

测试get请求则得到"Not found":

lee@mypc ~/works/nodejs/study4 $ curl "http://localhost:8000?id=1&name=2"
Not found !
AI 代码解读
目录
打赏
0
0
0
0
145
分享
相关文章
构建高效后端服务:Node.js与Express框架的实战指南
【9月更文挑战第6天】在数字化时代的潮流中,后端开发作为支撑现代Web和移动应用的核心,其重要性不言而喻。本文将深入浅出地介绍如何使用Node.js及其流行的框架Express来搭建一个高效、可扩展的后端服务。通过具体的代码示例和实践技巧,我们将探索如何利用这两个强大的工具提升开发效率和应用性能。无论你是后端开发的新手还是希望提高现有项目质量的老手,这篇文章都将为你提供有价值的见解和指导。
构建高效后端服务:Node.js与Express框架的完美搭档
【8月更文挑战第28天】在追求高性能、可扩展和易维护的后端开发领域,Node.js和Express框架的组合提供了一种轻量级且灵活的解决方案。本文将深入探讨如何利用这一组合打造高效的后端服务,并通过实际代码示例展示其实现过程。
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
Node服务连接Mysql数据库
本文介绍了如何在Node服务中连接MySQL数据库,并实现心跳包连接机制。
83 0
Node服务连接Mysql数据库
【干货分享】JavaScript学习笔记分享
【干货分享】JavaScript学习笔记分享
85 0
深入浅出Node.js: 打造高效的后端服务
【8月更文挑战第27天】在这个数字化飞速发展的时代,后端技术成为支撑互联网服务的基石。Node.js作为其中的佼佼者,以其非阻塞I/O模型、事件驱动架构和丰富的生态系统,赢得了开发者的青睐。本文将带领读者深入理解Node.js的核心概念,通过实际案例分析其应用模式,并探讨如何利用Node.js构建高效、可扩展的后端服务。无论你是初学者还是有经验的开发者,都能在这篇文章中找到提升你的Node.js技能的灵感和知识。
构建高效后端服务:Node.js与Express框架的深度整合
【8月更文挑战第27天】 在现代Web开发中,后端服务的高效性至关重要。本文深入探讨了如何利用Node.js的非阻塞I/O特性和Express框架的简洁性来打造高性能的后端服务。我们将通过具体案例,展示如何在不牺牲代码可读性和可维护性的前提下,实现高效的请求处理和服务端逻辑。文章旨在为开发者提供一个清晰的指导,帮助他们在构建后端服务时做出更明智的技术选择。
下一篇
oss创建bucket