目錄
寫在前面的話
以下是正文
需求分析
#資料分析設計
API分析設計
註冊介面
登入介面
登出介面
查看個人資訊介面
更改個人資訊介面
編碼實作
首頁 web前端 js教程 技術文章:使用Egg.js建構後台服務API (收藏系列)

技術文章:使用Egg.js建構後台服務API (收藏系列)

Jul 27, 2018 pm 05:05 PM
javascript mongodb node.js

在學習js時遇到Egg.js,就做了詳細的研究,它是阿里推出的基於Koa的node開發框架,為企業級框架和應用而生。如何建構後台服務API ,還需要後面的學習。本文章主要是介紹Egg.js搭建後台服務API ,需要的可以參考下。

寫在前面的話

因為平常開發都是前後端分離的模式,就想著使用Egg創建後台服務,寫一套API介面配合其他的專案。這個專案的技術棧用到了Egg.js、MongoDB、mongoose。這篇文章記錄我寫註冊登入模組和使用者中心模組的過程,目的是及時歸納學習過程,鍛鍊文件能力,和大家進行分享交流,共同進步。

專案地址: Egg-API

專案持續更新中,喜歡的請點心,關注,star ,fork, 這些是我長期堅持下去的動力(。_ 。)✎_

以下是正文

需求分析

對於註冊登陸模組,需求分析如下:

  • 註冊成為新用戶,對輸入的資料進行校驗

  • 登陸進入系統,需要對輸入的資料進行校驗,基於token鑑權認證

  • 登出功能

  • 登陸進去可以在使用者中心模組中查看個人資訊

  • #在使用者中心模組修改個人資訊

#資料分析設計

明確資料:

  • userName: String  使用者名稱

  • userPass: String  帳號密碼

  • userEmail: String  用戶信箱

  • telphone: String  手機號碼

  • avatar: String  頭像

  • age: Number  年齡

  • sex: String  性別

  • City: String  城市

隱含資料:

  • userRole: Number  用戶角色(1.一般使用者、 2.管理員、 3.超級管理員,預設用戶為一般用戶,超級管理員在建立資料庫的時候創建)

  • userCreate: Date  用戶建立時間

  • lastLoginTime: Date  上次登入時間

  • laseLoginPlace: String  上次登入位址

API分析設計

下文介面說明中的api指介面名,params指傳入的數據,code指回應結果標識碼,msg指回應結果資訊說明,data指回應成功回傳的資料

註冊介面
api: /api/v1/signup  (post)

params: {
    userName: String,  // 用户名,具有唯一性
    userPass: String,  // 用户密码
    userEmail: String,  // 用户邮箱
}

code: 1、注册成功 0:输入信息不完善或有误 -1:注册失败,该用户名已存在

msg: 响应返回的信息说明

data: {
    _id: _id,
    userName: 用户名,
    token: 生成的token,
}
登入後複製
登入介面
api: /api/v1/signin  (post,请求头带token)

params: {
    userName: String,  // 用户名
    userPass: String,  // 用户密码
}

code: 1、登录成功 0:输入信息不完善或有误  -1:用户不存在

msg: 响应返回的信息说明

data: {
    _id: _id,
    userName: 用户名,
    lastLoginTime: 上次登录时间,
    lastLoginPlace: 上次登录地点,
}
登入後複製
登出介面
api: /api/v1/signout  (get)

code: 1、登出成功,前端退出系统并清空token

msg: 登出响应返回信息说明

data: {}
登入後複製
查看個人資訊介面
api: /api/v1/user/userName  (post,请求头带token)

params: {
    userName: String,
}

code: 1、查询成功  0、输入信息不完善  -1、查询失败

msg: 查找个人信息返回信息说明

data: {
    userName: 用户名,
    userEmail: 用户邮箱,
    age: 年龄,
    city: 城市,
    ......
}
登入後複製
更改個人資訊介面
api: /api/v1/user/userName (put,token)

params: {
    ......  // 更改的信息
}

code: 1、更新成功 0、输入信息不完善或有误 -1、更新失败

msg: 更新个人信息返回信息说明

data: {
    userName: 用户名,
    ......
}
登入後複製

編碼實作

#附註:編碼實作說明只提供部分,完整內容請移步Egg-API

假設你已經初始化好了一個項目,項目的目錄結構約定和官方的一致。因為我們要使用MongoDB資料庫,所以要先安裝egg-mongoose,並在設定檔裡寫入:

// config/plugin.js
exports.mongoose = {
    enable: true,
    package: 'egg-mongoose',
};
// config/config.default.js
config.mongoose = {
    url: 'mongodb://127.0.0.1/apiExample',
    options: {},
};
登入後複製

在model資料夾定義我們的schema檔案:

const UserSchema = new Schema({
    userName: { type: String, unique: true, required: true, },
});
登入後複製

#路由定義:

router.post('/api/v1/signup', controller.user.signup);
登入後複製

controller編寫:用於解析使用者的輸入,處理後傳回對應的結果。我們可以把獲取到的資料放到render中進行渲染,然後把渲染後的結果發給遊覽器,或者,也可以把資料直接賦值給ctx.body,然後以json方式返回。

class UserController extends Controller {
    // 登录
    async signin() {
        const { ctx } = this;
        const rule = {
            userName: { type: 'string', required: true, message: '必填项' },
            userPass: { type: 'string', required: true, message: '必填项' },
        };
        const signinMsg = ctx.request.body;
        await ctx.validate(rule, signinMsg);
        signinMsg.userPass = ctx.helper.encrypt(signinMsg.userPass);
        const result = await ctx.service.user.signin(signinMsg);
        ctx.body = result;
    }
}
登入後複製

service編寫:用於編寫業務邏輯層,可以重複使用。複雜資料的處理,例如要展現的資訊需要從資料庫取得,或是第三方服務的呼叫。

class UserService extends Service {
    // 更新用户信息
    async updateUser(userMsg) {
        const { ctx } = this;
        const res = {};
        const result = await ctx.model.User.findByIdAndUpdate(userMsg._id, userMsg);
        res.code = 1;
        res.msg = '用户信息已更改';
        res.data = result;
        return res;
    }
}
登入後複製

一個簡單的node應用程式結構就是這樣,如此便實作了用Egg.js負責介面服務。 apache php mysql

相關文章:

Nodejs如何建立Web伺服器

伺服器-企業網站後台建置問題

#相關影片:

高效能Linux伺服器建立影片教學

#

以上是技術文章:使用Egg.js建構後台服務API (收藏系列)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

net4.0有什麼用 net4.0有什麼用 May 10, 2024 am 01:09 AM

.NET 4.0 用於創建各種應用程序,它為應用程式開發人員提供了豐富的功能,包括:物件導向程式設計、靈活性、強大的架構、雲端運算整合、效能最佳化、廣泛的程式庫、安全性、可擴展性、資料存取和行動開發支援。

Golang 和 Node.js 在後端開發的對比 Golang 和 Node.js 在後端開發的對比 Jun 03, 2024 pm 02:31 PM

Go和Node.js在類型化(強/弱)、並發(goroutine/事件循環)、垃圾收集(自動/手動)上有差異。 Go具備高吞吐量、低延遲,適用於高負載後端;Node.js擅長異步I/O,適合高並發、短請求。兩者的實戰案例包括Kubernetes(Go)、資料庫連線(Node.js)、網路應用程式(Go/Node.js)。最終選擇取決於應用程式需求、團隊技能和個人偏好。

如何在Debian上配置MongoDB自動擴容 如何在Debian上配置MongoDB自動擴容 Apr 02, 2025 am 07:36 AM

本文介紹如何在Debian系統上配置MongoDB實現自動擴容,主要步驟包括MongoDB副本集的設置和磁盤空間監控。一、MongoDB安裝首先,確保已在Debian系統上安裝MongoDB。使用以下命令安裝:sudoaptupdatesudoaptinstall-ymongodb-org二、配置MongoDB副本集MongoDB副本集確保高可用性和數據冗餘,是實現自動擴容的基礎。啟動MongoDB服務:sudosystemctlstartmongodsudosys

使用 Composer 解決推薦系統的困境:andres-montanez/recommendations-bundle 的實踐 使用 Composer 解決推薦系統的困境:andres-montanez/recommendations-bundle 的實踐 Apr 18, 2025 am 11:48 AM

在開發一個電商網站時,我遇到了一個棘手的問題:如何為用戶提供個性化的商品推薦。最初,我嘗試了一些簡單的推薦算法,但效果並不理想,用戶的滿意度也因此受到影響。為了提升推薦系統的精度和效率,我決定採用更專業的解決方案。最終,我通過Composer安裝了andres-montanez/recommendations-bundle,這不僅解決了我的問題,還大大提升了推薦系統的性能。可以通過一下地址學習composer:學習地址

MongoDB在Debian上的高可用性如何保障 MongoDB在Debian上的高可用性如何保障 Apr 02, 2025 am 07:21 AM

本文介紹如何在Debian系統上構建高可用性的MongoDB數據庫。我們將探討多種方法,確保數據安全和服務持續運行。關鍵策略:副本集(ReplicaSet):利用副本集實現數據冗餘和自動故障轉移。當主節點出現故障時,副本集會自動選舉新的主節點,保證服務的持續可用性。數據備份與恢復:定期使用mongodump命令進行數據庫備份,並製定有效的恢復策略,以應對數據丟失風險。監控與報警:部署監控工具(如Prometheus、Grafana)實時監控MongoDB的運行狀態,並

Navicat查看MongoDB數據庫密碼的方法 Navicat查看MongoDB數據庫密碼的方法 Apr 08, 2025 pm 09:39 PM

直接通過 Navicat 查看 MongoDB 密碼是不可能的,因為它以哈希值形式存儲。取回丟失密碼的方法:1. 重置密碼;2. 檢查配置文件(可能包含哈希值);3. 檢查代碼(可能硬編碼密碼)。

CentOS MongoDB備份策略是什麼 CentOS MongoDB備份策略是什麼 Apr 14, 2025 pm 04:51 PM

CentOS系統下MongoDB高效備份策略詳解本文將詳細介紹在CentOS系統上實施MongoDB備份的多種策略,以確保數據安全和業務連續性。我們將涵蓋手動備份、定時備份、自動化腳本備份以及Docker容器環境下的備份方法,並提供備份文件管理的最佳實踐。手動備份:利用mongodump命令進行手動全量備份,例如:mongodump-hlocalhost:27017-u用戶名-p密碼-d數據庫名稱-o/備份目錄此命令會將指定數據庫的數據及元數據導出到指定的備份目錄。

CentOS上GitLab的數據庫如何選擇 CentOS上GitLab的數據庫如何選擇 Apr 14, 2025 pm 04:48 PM

CentOS系統上GitLab數據庫部署指南選擇合適的數據庫是成功部署GitLab的關鍵步驟。 GitLab兼容多種數據庫,包括MySQL、PostgreSQL和MongoDB。本文將詳細介紹如何選擇並配置這些數據庫。數據庫選擇建議MySQL:一款廣泛應用的關係型數據庫管理系統(RDBMS),性能穩定,適用於大多數GitLab部署場景。 PostgreSQL:功能強大的開源RDBMS,支持複雜查詢和高級特性,適合處理大型數據集。 MongoDB:流行的NoSQL數據庫,擅長處理海

See all articles