Ich habe Egg.js kennengelernt, als ich js lernte, und habe eine detaillierte Studie durchgeführt. Es handelt sich um ein von Alibaba eingeführtes Knotenentwicklungsframework, das für Frameworks und Anwendungen auf Unternehmensebene entwickelt wurde. Wie man eine Backend-Service-API erstellt, erfordert weitere Untersuchungen. In diesem Artikel wird hauptsächlich Egg.js zum Erstellen einer Backend-Service-API vorgestellt. Sie können darauf zurückgreifen, wenn Sie es benötigen.
Da die normale Entwicklung auf der Trennung von Front-End und Back-End basiert, habe ich darüber nachgedacht, Egg zu verwenden, um Back-End-Dienste zu erstellen und eine Reihe von APIs zu schreiben Schnittstellen zur Zusammenarbeit mit anderen Projekten. Der Technologie-Stack dieses Projekts verwendet Egg.js, MongoDB und Mongoose. In diesem Artikel wird der Prozess des Schreibens des Registrierungs- und Anmeldemoduls sowie des User Center-Moduls aufgezeichnet. Der Zweck besteht darin, den Lernprozess zeitnah zusammenzufassen, Dokumentationsfähigkeiten zu üben, mit allen zu teilen und zu kommunizieren und gemeinsam Fortschritte zu erzielen.
Projektadresse: Egg-API
Wenn es Ihnen gefällt, klicken Sie bitte auf „Gefällt mir“, „Folgen“ und „Forken“. langfristig (._.) ✎_
Für das Registrierungs- und Anmeldemodul lautet die Anforderungsanalyse wie folgt:
Registrieren Sie sich als neuer Benutzer und geben Sie die Daten ein.
Melden Sie sich beim System an. Sie müssen die Eingabedaten anhand der Token-Authentifizierung überprüfen
Abmeldefunktion
Anmelden, um persönliche Informationen im User Center-Modul anzuzeigen
Ändern Persönliche Informationen im User Center-Modul
Explizite Daten:
Benutzername: String Benutzername
userPass: String Kontopasswort
userEmail: String Benutzer-E-Mail
telphone: String Mobiltelefonnummer
Avatar: String Avatar
Alter: Nummer Alter
Geschlecht: String Geschlecht
Stadt: String City
Implizite Daten:
userRole: Nummer der Benutzerrolle (1. Gewöhnlich Benutzer, 2. Administrator, 3. Superadministrator, Standardbenutzer Für normale Benutzer erstellt der Superadministrator es beim Erstellen der Datenbank)
userCreate: Datum der Benutzererstellungszeit
lastLoginTime: Datum der letzten Anmeldung
laseLoginPlace: String Letzte Anmeldeadresse
Die API in der Schnittstellenbeschreibung unten bezieht sich auf den Schnittstellennamen, Parameter bezieht sich auf die eingehenden Daten, Code bezieht sich auf den Identifikationscode des Antwortergebnisses, Nachricht bezieht sich auf die Beschreibung der Antwortergebnisinformationen, Daten beziehen sich auf die erfolgreich zurückgegebenen Daten Antwort
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: 用户名, ...... }
Hinweis: Es werden nur Anweisungen zur Kodierungsimplementierung bereitgestellt. Den vollständigen Inhalt finden Sie unter Egg-API
Gehen Sie davon aus, dass Sie ein Projekt und die Verzeichnisstruktur initialisiert haben des Projekts stimmt mit der offiziellen überein. Da wir die MongoDB-Datenbank verwenden möchten, müssen wir zuerst egg-mongoose installieren und in die Konfigurationsdatei schreiben:
// config/plugin.js exports.mongoose = { enable: true, package: 'egg-mongoose', }; // config/config.default.js config.mongoose = { url: 'mongodb://127.0.0.1/apiExample', options: {}, };
Definieren Sie unsere Schemadatei im Modellordner:
const UserSchema = new Schema({ userName: { type: String, unique: true, required: true, }, });
Routendefinition:
router.post('/api/v1/signup', controller.user.signup);
Controller-Schreiben: Wird verwendet, um Benutzereingaben zu analysieren und nach der Verarbeitung entsprechende Ergebnisse zurückzugeben. Wir können die erhaltenen Daten zum Rendern in Render einfügen und dann das gerenderte Ergebnis an den Browser senden, oder wir können die Daten direkt ctx.body zuweisen und sie dann im JSON-Modus zurückgeben.
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; } }
Dienstschreiben: Wird zum Schreiben der Geschäftslogikschicht verwendet und kann wiederverwendet werden. Für die Verarbeitung komplexer Daten müssen beispielsweise die anzuzeigenden Informationen aus der Datenbank bezogen oder der Dienst eines Drittanbieters aufgerufen werden.
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; } }
Eine einfache Knotenanwendungsstruktur sieht so aus, sodass Egg.js für den Schnittstellendienst verantwortlich ist. Apache PHP MySQL
Verwandte Artikel:
So erstellen Sie einen Webserver mit Nodejs
Probleme beim Backend-Aufbau von Server-Unternehmens-Websites
Ähnliche Videos:
Video-Tutorial zum Aufbau eines Hochleistungs-Linux-Servers
Das obige ist der detaillierte Inhalt vonTechnischer Artikel: Verwenden Sie Egg.js zum Erstellen einer Backend-Service-API (Sammlungsreihe). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!