» Node.js:使用Express构建REST API » 2. 开发 » 2.1 初始版本

初始版本

创建 package

执行 npm init 命令为你的应用创建 package.json 文件。

npm init

这个命令会提示你输入一些内容,比如你应用的名称和版本。目前,你可以简单地按 RETURN 键接受大多数默认设置,除了入口点 entry point

咱们倾向于使用 app.js 而不是 index.js

其结果大致如下:

package name: (lr_rest_books_node) 
version: (1.0.0) 
description: RESTful API implemented with Express in Node.js.
entry point: (index.js) app.js
test command: 
git repository: https://github.com/Literank/lr_rest_books_node.git
keywords: express,rest,books
author: literank.com
license: (ISC) MIT
About to write to /Users/netdong/workspace/2023/projects/lr_rest_books_node/package.json:

{
  "name": "lr_rest_books_node",
  "version": "1.0.0",
  "description": "RESTful API implemented with Express in Node.js.",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/Literank/lr_rest_books_node.git"
  },
  "keywords": [
    "express",
    "rest",
    "books"
  ],
  "author": "literank.com",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/Literank/lr_rest_books_node/issues"
  },
  "homepage": "https://github.com/Literank/lr_rest_books_node#readme"
}

该命令会创建一个 package.json 文件,其用于查看管理项目依赖。

安装 Express

npm install express

该命令会更新 package.json 文件并在项目中自动创建一个 package-lock.json 文件。

创建 app.js:

const express = require("express");
const app = express();
const port = 3000;

app.get("/ping", (req, res) => {
  res.send({ message: "pong" });
});

app.listen(port, () => {
  console.log(`Listening on port ${port}`);
});

如下运行程序:

node app.js

将得到一行如下信息:

Listening on port 3000

你的 API 服务器已经在 3000 端口跑起来了。

尝试使用 curl 命令测试 /ping 端点:

curl http://localhost:3000/ping

结果显示:

{"message":"pong"}

不错!你的服务器运作起来了。

转型到 TypeScript

在 Node.js 项目中使用 TypeScript 有许多好处:

  1. 静态类型检查:TypeScript 允许你为变量、参数和返回值定义类型。这有助于在开发过程中捕获与类型相关的错误,而不是在运行时,从而使代码更加健壮和可预测。
  2. 提高代码可读性:通过类型注解,代码变得更加自解释,这使得开发人员更容易理解代码库并有效地进行协作。对于大型项目而言,类型信息可当作额外的文档。
  3. 增强的 IDE 支持:TypeScript 在像 Visual Studio Code 这样的 IDE 中可提供更好的工具支持,比如提供代码导航、自动完成和内联文档等功能,这可以大大提高生产力和代码质量。

好的,让我们来进行转型。

执行如下命令来安装 typescript 相关依赖:

npm install typescript ts-node @types/node @types/express --save-dev

--save-dev 标记表示这些依赖都是开发依赖 devDependencies,只在开发阶段被使用。

在根目录创建 tsconfig.json

{
  "compilerOptions": {
    "target": "ESNext",
    "module": "CommonJS",
    "outDir": "./dist",
    "strict": true,
    "esModuleInterop": true
  },
  "include": ["src/**/*.ts"],
  "exclude": ["node_modules"]
}

移动 app.jssrc/app.ts 并更新其内容:

import express, { Request, Response } from "express";

const app = express();
const port = process.env.PORT || 3000;

app.get("/ping", (req: Request, res: Response) => {
  res.json({ message: "pong" });
});

app.listen(port, () => {
  console.log(`Listening on port ${port}`);
});

添加 scripts 到 package.json

@@ -4,7 +4,9 @@
   "description": "RESTful API implemented with Express in Node.js.",
   "main": "app.js",
   "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
+    "dev": "ts-node src/app.ts",
+    "build": "tsc",
+    "serve": "node dist/app.js"
   },
   "repository": {

运行新版的程序:

npm run dev

再次尝试使用 curl 命令测试 /ping 端点:

curl http://localhost:3000/ping

结果依然显示:

{"message":"pong"}

不错!TypeScript 版本的 API 运行正常。