五分钟用hapi和mongoDB构建一个RESTful的CRUD接口API

2,088 阅读2分钟

hapi简单介绍

hapi是指hapijs,是一个基于nodejs的开发框架。根据hapi官网hapi官网链接首页介绍,hapi是一个深受开发者信任的简单、安全的框架。用最少的编码和开箱即用的功能来构建强大的可扩展的应用程序--“你的代码你做主。”

hapi的文档支持包括中英文在内的5种语言。目前的版本18.4。

hapi在国外应用很广泛,有着丰富的生态。健全的文档、规范的代码风格、简单的模块和插件机制让hapi的扩展更加容易。

hapi在国内应用不是很广泛。“藏在深山人未识”。本文通过快速创建一个博客项目API接口为例,来展示hapi的强大和简便。本文介绍hapi项目最基本的增删改查功能的实现,后期还会陆续推出文章介绍hapi项目的接口文档自动生成、数据验证、用户鉴权和文件上传等扩展功能,最后完成一个完整的开源项目示例。

hapi-scaffold

hapi-scaffold是github上的一个开源项目。hapi-scaffold不需要写一行代码就可以帮你构建一个标准的RESTful项目,包括MVC的项目结构,以及项目所需的全部代码。对于前端工程师来说,这是一个提高工作效率的强大工具。

hapi-scaffold的链接:https://github.com/jeffsouza/hapi-scaffold

创建项目

在桌面创建一个posts项目文件夹并进入项目目录。

cd desktop
mkdir posts
cd posts

初始化项目:

npm int

全局安装hapi-scaffold模块。

$ npm install hapi-scaffold -g

初始化项目结构

安装hapimongoose模块。

$ npm i @hapi/hapi mongoose

初始化hapi项目结构。

$ hapi-scaffold init

hapi-scaffold 会自动帮我们在项目目录下创建如下的hapi项目结构:

项目文件目录1

连接mongoDB数据库

输入下面的命令会在config文件夹下创建数据库链接文件dadabase.js

$ hapi-scaffold generate db:mongo

dadabase.js内容如下:

const mongoose = require('mongoose');
class Database {
    static connect() {
        mongoose.connect('URL', {useNewUrlParser: true});
    }
}
module.exports = Database;

将mongoDB的连接URL改成你自己的地址,如:

mongoose.connect('mongodb://localhost:27017/posts', {useNewUrlParser: true, useUnifiedTopology: true});

一键生成CRUD

输入以下命令来创建posts的模型、控制器、路由等文件。

$ hapi-scaffold scaffold post title:string:required content:string rating:number

搞定!屏幕会显示:

Model created!
Service created!
Controller created!
Route created!
Route registered!

基于hapi的posts的增删改查API就这样简单地生成了!

我们再来看看项目的目录结构:

项目文件目录2

测试

在命令行输入下面的代码来运行项目:

node .

项目成功运行在指定的网址:

Listening on http://localhost:8000

用postman先来添加两条数据:

用postman查询这两条数据:

用postman修改第二条数据:

用postman删除第二条数据:

现在第二篇博客被删除了:

是不是So easy ,So hapi?