首页 > 编程语言 >node.js启动http服务

node.js启动http服务

时间:2024-04-04 09:11:53浏览次数:24  
标签:node http res writeHead js 响应 服务器 server

新建一个文件 server.js,代码如下

// 导入http模块
const http = require('http');
// 定义主机和端口号
const hostname = '127.0.0.1';
const port = 3000;
// 创建HTTP服务器
const server = http.createServer((req, res) => {
    // 获得HTTP请求的method和url:
    console.log(req.method + ': ' + req.url);
    // 将HTTP响应200写入response, 同时设置Content-Type: text/html:
    res.writeHead(200, { 'Content-Type': 'text/html' });
    // 发送响应
    res.end('<h1>Hello, Eric!</h1>');
});
// 启动服务器监听指定的主机和端口
server.listen(port, hostname, () => {
    console.log(`Server running at http://${hostname}:${port}/`);
});

要运行这个服务器,您只需将以上代码保存到一个.js文件中(例如server.js),然后在终端中运行node server.js命令。然后,您可以在浏览器中访问http://127.0.0.1:3000/来查看您的服务器是否正常运行。

讲解

可替代的代码

res.writeHead(200, { 'Content-Type': 'text/html' });

可以用

res.statusCode = 200;
res.setHeader('Content-Type', 'text/html');

 

res.setHeader 和 res.writeHead 都是 Node.js HTTP 模块中用于设置 HTTP 响应头的方法,但它们有一些不同之处:

  1. res.setHeader:

    • res.setHeader(name, value) 方法用于设置指定名称的响应头的值。如果已存在具有指定名称的响应头,则该值将被替换为新值。
    • 该方法可以多次调用来设置不同的响应头。
    • 例如:
      res.setHeader('Content-Type', 'text/html');
      res.setHeader('Cache-Control', 'max-age=3600');
  2. res.writeHead:

    • res.writeHead(statusCode, [reasonPhrase], [headers]) 方法用于写入响应头和状态码到响应流中,并且可以在写入响应体之前调用。
    • 该方法允许您一次性设置状态码、原因短语和响应头,如果指定了响应头,它将覆盖之前通过 res.setHeader 设置的同名响应头。
    • 例如:
      res.writeHead(200, 'OK', {'Content-Type': 'text/html', 'Cache-Control': 'max-age=3600'});

通常情况下,如果您只需要设置少量的响应头,可以使用 res.setHeader。但是,如果您需要在一次操作中设置多个响应头以及状态码和原因短语,那么可以使用 res.writeHead

 

在 Node.js 的 res.writeHead 方法中,参数2 reasonPhrase 是可选的,因此您可以选择省略它。如果省略了 reasonPhrase,则将使用默认的原因短语,与指定的状态码相对应。

例如,如果您只想设置状态码为 200,并使用默认的原因短语 "OK",您可以这样调用 writeHead 方法:

res.writeHead(200, {'Content-Type': 'text/html', 'Cache-Control': 'max-age=3600'});

在这个例子中,我们省略了第二个参数 reasonPhrase,并且状态码为 200 对应的默认原因短语将被使用。

 

在 Node.js 的 server.listen 方法中,hostname 参数是可选的,如果省略,则服务器将会监听所有可用的网络接口。

如果您省略了 hostname 参数,代码会像这样:

server.listen(port, () => {
  console.log(`Server running on port ${port}`);
});

在这个例子中,服务器将监听所有可用的网络接口,而不限制于特定的主机名。这对于大多数情况下都是合适的,特别是在您只需要在本地开发环境中运行服务器时。

当服务器监听所有可用的网络接口时,它将会在所有可用的网络地址上接受连接请求,而不仅限于特定的主机名。这意味着可以通过计算机上的任何网络接口访问服务器,无论是通过本地回环地址(localhost)、本地局域网 IP 地址还是公共 IP 地址。

 

后台运行Node.js服务器并隐藏终端

要在后台运行Node.js服务器并隐藏终端,您可以使用以下方法之一:

  1. 使用nohup命令(适用于Unix系统):

    nohup node server.js > /dev/null 2>&1 &

    这将在后台启动Node.js服务器,并将输出重定向到/dev/null,即丢弃所有输出。服务器将在后台运行,而不会在终端上显示任何输出。

  2. 使用PM2进程管理器: 首先,您需要全局安装PM2:

    npm install -g pm2

    然后,在您的项目目录下启动服务器:

    pm2 start server.js

    这将使用PM2在后台启动Node.js服务器,并管理其运行状态。您可以使用pm2 logs命令查看日志,使用pm2 stop命令停止服务器。

这两种方法都允许您在后台运行Node.js服务器,而不会在终端上显示输出。

标签:node,http,res,writeHead,js,响应,服务器,server
From: https://www.cnblogs.com/yuyanc/p/18113900

相关文章

  • 30 天精通 RxJS (08):简易拖拉实作 - take, first, takeUntil, concatAll
    我们今天要接着讲take,first,takeUntil,concatAll这四个operators,并且实作一个简易的拖拉功能。Operatorstaketake是一个很简单的operator,顾名思义就是取前几个元素后就结束,范例如下varsource=Rx.Observable.interval(1000)varexample=source.take(3)example.......
  • nextjs 的函数,参数,属性装饰器的使用
    //属性装饰器constdoc1:PropertyDecorator=(target:any,val:string|symbol)=>{console.log(target);console.log(val);val="覆盖";}//方法装饰器constdoc2:MethodDecorator=(target:any,val:string|symbol,desc:any)=>{cons......
  • python 解析json字符串保存到对象中
    在Python中,你可以使用内置的json模块来解析JSON字符串并保存到对象中。以下是一个简单的示例:pythonimportjson#假设你有以下的JSON字符串json_string='{"name":"Alice","age":25,"city":"NewYork"}'#使用json模块的loads方法将JSON字符串解析为Python对象(在这种情况下......
  • 如何根据JSON文件内容生成自定义对象
    在Python中,你可以使用json模块来解析JSON文件,并将解析后的数据映射到自定义的Python对象上。这通常涉及到定义一个类,并为该类实现一个__init__方法来初始化对象的属性。然后,你可以编写一个函数来读取JSON文件,将解析后的数据传递给类的构造函数,从而创建自定义对象。下面是一个简单......
  • JS实现检查给定时间范围是否在每天的某个时间段内
    //解析时间字符串,返回对应的分钟数functionparseTime(timeStr){const[hours,minutes]=timeStr.split(':').map(num=>parseInt(num));returnhours*60+minutes;}//解析时间字符串,返回对应的Date对象functionparseTimeString(timeStr){const......
  • Python中处理JSON字段时,和如何将Python对象转换为JSON字符串
    在Python中处理JSON字段时,通常使用内置的json模块。这个模块允许你将Python对象转换为JSON字符串,以及将JSON字符串解析为Python对象。以下是一些常见的JSON字段处理操作:1.将Python对象转换为JSON字符串python复制importjson#定义一个Python字典data={  "name"......
  • 打字动画 Typed.js
    打字动画Typed.js 概述Typed.js是一个JavaScript库,用于在网页上创建打字动画效果。它使您能够模拟打字机或逐字显示文本的效果,从而为用户提供逐渐展示文本的视觉体验。Typed.js提供了丰富的选项和配置,可以自定义打字动画的速度、暂停时间、删除效果等。您可以使用HTM......
  • nodejs守护进程 PM2
    nodejs守护进程PM2 概述PM2是用于Node.js应用程序的生产环境进程管理器,内置负载均衡器。它允许你将应用程序持续运行,无需停机重新加载,并简化常见的系统管理任务。官方网站 Github特性进程管理:PM2可以启动、停止和重启Node.js应用程序进程,确保应用程序一直处于运行......
  • 模板引擎 Handlebars.js
    模板引擎Handlebars.js 概述Handlebars.js是一个简单而强大的JavaScript模板引擎。它允许开发者通过定义模板和数据来生成动态的HTML页面。Handlebars.js基于Mustache模板语法,它提供了一些扩展和增强功能。并且开发者可以创建可重用的模板,并通过将数据传递给模板......
  • 使用 Node.js 连接 MySQL
    使用Node.js连接MySQL 概述当使用Node.js开发Web应用程序时,经常需要与数据库进行交互来存储和检索数据。MySQL 是一个流行的关系型数据库管理系统,它提供了强大的功能和性能。本文将介绍如何使用Node.js连接MySQL数据库,并展示一些常见的操作示例。开始在这里我们将......