Node.js服务器构建速查表

节点服务器是什么。

使用Node.js就可以搭建,非常快速
其他电脑也可以访问
请不要忘记开放端口(如果是EC2,请设置安全组)σ(゚∀゚ )オレ

背景-Context

他的供应商开发进展缓慢,一直没有开始连接测试,真是麻烦,我觉得好烦。
突然想到,哦,人员部门,哦,人员部门,还有node服务器。

Node服务器 (http) 快速参考手册

构成

├ server.js
├ package.json
└ download.txt # 下载文件,内容可以是任意的

'use strict';
var log4js = require('log4js');
var logger = log4js.getLogger('test');
log4js.configure({ appenders: { default: { type: "console", layout: { type: "basic" } } }, categories: { default: { appenders: ['default'], level: 'debug' }}, replaceConsole: true, level: 'info' })
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
var http = require('http');
var util = require('util');
var host = 'localhost'; 
var port = 8000;

app.use( function(req,res,next) {
    logger.info('%s %s', req.method, req.url);
    logger.info('header='+JSON.stringify(req.headers));
    logger.info('query='+JSON.stringify(req.query));
    logger.info('body='+JSON.stringify(req.body));
    next();
});

var server = http.createServer(app).listen(port, function() {});
console.log('*** server start http://%s:%s ***',host,port);
logger.info('*** server start http://%s:%s ***',host,port);
server.timeout = 30000;
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0; // オレオレ証明書サーバへリクエストする場合

// top page
app.all('/', function(req, res) { // methodを限定しない
    res.header({'Content-type': 'text/html'});
    res.end(util.format('<h1>http://%s:%s for honya</h1>',host,port)); // サーバの用途が分かるようなタイトルを表示する
});

// json を返す場合 REST形式
app.all('/rest/v1/user/:id', function(req,res) { 
    logger.info('id='+req.params.id); // url パラメータの参照

    let json = {
        id: req.params.id,
        name: "honya",
        dob: (new Date('2020-01-01 12:34:56')).getTime(),
    }
    res.status(201).json(json);
});

// html を返す場合 ASP.NET形式
app.all('/asp/honya.asmx', function(req,res) {
    let html = `
<html>
<body>
    <h1>request url: ${req.method} ${req.url}</h1>
    <div>response</div>
</body>
</html>
`;
    res.end(html); 
});

// 存在するファイルをダウンロードする場合 cgi形式
app.all('/cgi-bin/honya.cgi', function(req,res) { 
    res.download(__dirname + '/download.txt','server.log'); 
});

// csvデータをダウンロードする場合 php形式
app.all('/php/honya.php', function(req,res) { 
    let header = {
        'Content-disposition': 'attachment; filename=server.csv',
        'Content-type': 'text/plain; charset=utf-8',
    }
    res.header(header);

    let csv = "id,name\n1,honya\n";
    res.send(csv); 
});
{
  "dependencies": {
    "body-parser": "^1.19.0",
    "express": "^4.17.1",
    "log4js": "^6.3.0"
  }
}

启动

cd ~/ # ルートフォルダへ移動
npm install # 初回のみ
node server.js
# 終了するときは Ctrl + C

一直处于运行状态

cd ~/ # ルートフォルダへ移動
npm install # 初回のみ
npm install forever -g # 初回のみ
forever start -l server.log -a server.js
# 終了するときは forever stopall # 全部止まるけど何個も立ち上げる方が悪い(笑)

作者エンディウは、この物語が終わるにあたり、読者に向けた短いメッセージを送ります。

作者エンディウ希望您喜欢这个故事,感谢您的阅读。

关于形式

REST、ASP.NET、cgi、php 的 URL 上准备了4种响应模式。
只有 Node.js 能够在一个文件中实现这一点。

我曾经遇到无法连接测试,并准备了大约100个URL的情况。那时我准备了一个Json,然后从那里返回值。这不仅限于Node.js,也可以做到。

环境的依赖性

我认为每个环境都有各自的配置文件,但对于Node服务器来说,除了host之外,其他都可以保持相同。
例如:
honyaUrl:http://devhost:8000/v1/customer/get.asmx(开发环境)
honyaUrl:http://prodhost/v1/customer/get.asmx(生产环境)

对于一个常常犯错误的人来说,像这样微小的事情是很重要的。

这是模型!

由于用途只是模拟,所以省略了一些无用的事情。

・可以建立多个(通过更改端口,可以建立任意数量的)
・取消端口(使用apache或nginx)
・勾选(方法检查、头部检查、输入检查等)
・从模拟访问到另一个服务(nodejs请求的备忘单)

無駄

Node.js SSL服务器构建备忘单

广告
将在 10 秒后关闭
bannerAds