ionic 后台Api服务, 使用rest-hapi , node.js 创建 RESTful API Service , 附完整源代码
Posted caiyaming
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ionic 后台Api服务, 使用rest-hapi , node.js 创建 RESTful API Service , 附完整源代码相关的知识,希望对你有一定的参考价值。
使用node.js创建RESTful 的API Service, 可以选择的框架有 hapi, express 等。 这里笔者推荐使用 hapi框架,会自动创建model 的 CRUD endpoints ,简单易行。 使用过express, 还是有不少坑的, 尤其在client和server端数据交互时,使用中间件body-parse 问题不少, 笔者将在下一篇文章详述。
-
安装最新版本 Node.js . Node.js官方下载
-
使用 Visual Studio Code 打开一个空的文件夹, 比如 c:workionichapi-demo-service ,
-
打开Visual Studio Code的终端,输入 npm init , 出现如下所示的信息, 直接按回车使用默认设置即可。也可输入内容替换默认信息。知道出现提示 : is it OK? (yes) ,输入yes 即可。 这时会在hapi-demo-service根目录下生产package.json文件。
C:WorkIonichapi-demo-service>npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sensible defaults. See `npm help json` for definitive documentation on these fields and exactly what they do. Use `npm install <pkg>` afterwards to install a package and save it as a dependency in the package.json file. Press ^C at any time to quit. package name: (hapi-demo-service) hapi-demo-service version: (1.0.0) description: hapi demo service entry point: (index.js) ... Is this OK? (yes) yes
-
安装开发包。依次在终端中运行 npm i Hapi --save , npm i mongoose --save
-
安装 rest-hapi插件. 终端中输入 npm i rest-hapi --save
-
生成service入口类(或者是主类) touch index.js. (index.js 是默认设置, 请参考package.json文件,main节点。
将如下代码拷贝到index.js
const Hapi = require("hapi"); let mongoose = require(‘mongoose‘); let RestHapi = require(‘rest-hapi‘); async function api(){ try { let server = Hapi.Server({ //Amin: host is important for ios system. If missing host, the in IOS, it would use machinename.local to replace localhost //if post or get request raised , there‘s no response. host: ‘localhost‘, port: 3001 }); let config = { appTitle: "hapi-demo-service", version: ‘1.0.0‘, authStrategy: false , mongo: { URI: ‘mongodb://localhost/hapi-demo-service‘ } }; config.embedAssociations = false; await server.register({ plugin: RestHapi, options: { mongoose, config } }); await server.start(); console.log("Server ready", server.info); return server; } catch (err) { console.log("Error starting server:", err); } } module.exports = api();
- 生成model类。 VS code 打开终端。输入 mkdir models, 然后再输入 touch modelsuser.model.js , 此时会生成 user model。 注意目录名称必须是 models , 文件名称需遵循格式 {model name}.model.js.
将以下代码拷贝到 user.model.js
module.exports = function (mongoose) { let modelName = "user"; let Types = mongoose.Schema.Types; let Schema = new mongoose.Schema({ email: { type: Types.String, required: true, unique: true }, password: { type: Types.String, required: true, exclude: true, allowOnUpdate: false } }); Schema.statics = { collectionName: modelName, routeOptions: {} }; return Schema; };
- 好,大功告成。可以运行程序了。终端输入 node index.js 。 当然,也可以使用 npm start来运行。 将 "start": "node index.js" 添加到package.json的scripts 节点中。
以下是更新后package.json的 scripts 节点
"scripts": { "test": "echo "Error: no test specified" && exit 1", "start": "node index.js" },
运行成功界面如下
C:WorkIonichapi-demo-service>node index.js 。
以下是运行界面
[14:29:03.251] 16856 LOG api/mongoose-init — Connecting to Database...: [14:29:03.260] 16856 LOG api/mongoose-init — URI: `mongodb://localhost/hapi-demo-service` [14:29:03.277] 16856 LOG api/mongoose-init — mongoose connected [14:29:03.278] 16856 LOG api — Initializing Server... [14:29:03.367] 16856 INFO api/register-hapi-swagger — hapi-swagger plugin registered [14:29:03.367] 16856 INFO api/register-MrHorse — MrHorse plugin registered Server ready { created: 1530253743241, started: 1530253743467, host: ‘CNSHAEL3Z5Z9H2‘, port: 3001, protocol: ‘http‘, ... address: ‘0.0.0.0‘ }
- 浏览器中输入 : http://localhost:3001 。使用rest-hapi框架的好处是: 会自动生成CRUD的endpoints.
测试api方法,这里推荐使用postman. 当然,在浏览器中也是可以测试的。
DELETE /user Delete multiple users POST /user Create one or more new users GET /user Get a list of users DELETE /user/{_id} Delete a user GET /user/{_id} Get a specific user PUT /user/{_id} Update a user
运行界面截图:
创建一个新的User
使用robot 3T 在 mongo DB 中查看结果,
最后,附上源代码链接 : https://github.com/amincai/hapi-demo-service
下载到本机后,终端运行 npm i
行文仓促,难免有所错漏或失误,欢迎批评指正。
@caiyaming
以上是关于ionic 后台Api服务, 使用rest-hapi , node.js 创建 RESTful API Service , 附完整源代码的主要内容,如果未能解决你的问题,请参考以下文章
在 ionic 3 中使用后台地理位置无法将位置数据更新到服务器中