在现代 Web 开发中,REST API 是非常常见的一种 API 性质,能够提供方便易用的 Web 服务。而 TypeScript 是一门静态类型的 JavaScript 超集,带来可维护和可扩展性的权益。
这篇文章将会教你如何用 TypeScript 开发简单的 REST API,并展示一个使用 Express、TypeORM 和 PostgreSQL 的示例项目。
准备工作
为了构建这个 API,我们需要准备以下环境:
- Git 客户端
- Node.js
- PostgreSQL 数据库
在安装好这些必需的软件之后,我们可以创建一个新的 TypeScript 项目:
$ mkdir simple-rest-api $ cd simple-rest-api $ npm init -y $ npm install express typeorm pg $ npm install -D typescript ts-node nodemon $ npx tsc --init
创建 Express 应用
首先,我们需要添加一些常用的中间件,用 app.use()
方法把它们都集成到 Express 应用里面。
import express from 'express'; const app = express(); app.use(express.json()); app.use(express.urlencoded({ extended: true }));
这里的 express.json()
中间件能够帮助我们解析 JSON,express.urlencoded()
则能帮助我们解析 URL 编码。
接下来,我们需要添加一个路由来响应 HTTP 请求。这个路由将会返回一些简单的 JSON 数据给客户端。
app.get('/', (req, res) => { res.json({ message: 'Hello World!' }); });
连接数据库
我们可以用 TypeORM
来连接 PostgreSQL 数据库并定义实体类。实体类是数据库存储的数据模型,每个实体类对应一张表。
-- -------------------- ---- ------- ------ - ----------------- ----------------- - ---- ---------- ----- -------- ----------------- - - ----- ----------- ----- ------------ ----- ----- --------- ----------- --------- ----------- --------- ------------------ ------------ ----- --------- - -- -------- -- -- ------------------------- -------- -- - --------------------- ------------ -- ------------ -- - --------------------- ---------- ------- ----- ---
需要注意的是,createConnection()
方法是一个异步操作(返回一个 Promise
),我们需要使用 then()
和 catch()
函数来处理结果。
构建实体类
在 entities
数组中添加我们的实体类,并指定它们对应使用的数据表就好了。
-- -------------------- ---- ------- ------ - ------- ------- ---------------------- - ---- ---------- --------- ------ ----- ---- - ------------------------- --- ------- --------- ----- ------- --------- ------ ------- -
这里的 @Entity()
装饰器指定了实体类对应的数据表。@PrimaryGeneratedColumn()
、@Column()
则分别表示这个字段是主键和普通字段。
创建 REST API 集成实体类
现在,我们可以开始创建 REST API 并集成实体类了。我们需要添加以下路由来处理 CRUD 操作:
-- -------------------- ---- ------- ------ - ------------- - ---- ---------- ----------------- ----- ----- ---- -- - ----- -------------- - -------------------- ----- ----- - ----- ---------------------- ---------------- --- --------------------- ----- ----- ---- -- - ----- -------------- - -------------------- ----- ---- - ----- -------------------------------------- --------------- --- ------------------ ----- ----- ---- -- - ----- -------------- - -------------------- ----- ---- - -------------------------------- ----- -------------------------- --------------- --- --------------------- ----- ----- ---- -- - ----- -------------- - -------------------- ----- ---- - ----- -------------------------------------- -------------------------- ---------- ----- -------------------------- --------------- --- ------------------------ ----- ----- ---- -- - ----- -------------- - -------------------- ----- ---- - ----- -------------------------------------- ----- ---------------------------- --------------- ---
这里的 getRepository
方法用来获取数据库操作实体类的仓库(Repository),然后我们就可以使用它们提供的 CRUD 方法(find()
、findOne()
、create()
、save()
、remove()
等)来操作数据库了。
打开应用并测试 API
现在,我们可以使用适当的运行命令来启动应用程序,例如:
$ npm run start
或者,你可以使用 ts-node
命令来直接运行。
当我们为应用程序创建一个新的 HTTP 请求时,我们可以看到请求成功(HTTP 状态码 200 OK
)。
测试 API
为了测试我们的 API,我们将使用 curl
工具来创建 HTTP 请求。我们可以使用以下命令检索用户数据:
$ curl http://localhost:3000/users
输出应该类似于以下内容:
-- -------------------- ---- ------- - - ----- -- ------- -------- -------- ------------------- -- - ----- -- ------- ------ -------- ----------------- - -
我们还可以使用以下命令获取单个用户信息:
$ curl http://localhost:3000/users/1
此时应该会输出 Alice 的信息:
{ "id": 1, "name": "Alice", "email": "alice@example.com" }
类似地,我们也可以使用 POST
、PUT
、DELETE
方法来对用户数据进行 Create、Update、Delete 操作。
结论
本篇文章简要介绍了 TypeScript 开发 REST API 的基本步骤,并以示例代码的形式展现了一个实际的实现方案。如果你想深入了解 TypeScript 和其他 Web 开发技术,可以查看 TypeScript 官方文档 和 Express 官方文档。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/674ae974da05147dd029fc93