Heim > Web-Frontend > js-Tutorial > Hauptteil

Technischer Artikel: Verwenden Sie Egg.js zum Erstellen einer Backend-Service-API (Sammlungsreihe)

php是最好的语言
Freigeben: 2018-07-27 17:05:44
Original
4393 Leute haben es durchsucht

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.

Was ich zuvor geschrieben habe

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 (._.) ✎_

Das Folgende ist der Text

Anforderungsanalyse

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

Datenanalyse und -design

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

API-Analyse und Design

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

Registrierungsschnittstelle
api: /api/v1/signup  (post)

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

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

msg: 响应返回的信息说明

data: {
    _id: _id,
    userName: 用户名,
    token: 生成的token,
}
Nach dem Login kopieren
Anmeldeschnittstelle
api: /api/v1/signin  (post,请求头带token)

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

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

msg: 响应返回的信息说明

data: {
    _id: _id,
    userName: 用户名,
    lastLoginTime: 上次登录时间,
    lastLoginPlace: 上次登录地点,
}
Nach dem Login kopieren
Abmeldeschnittstelle
api: /api/v1/signout  (get)

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

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

data: {}
Nach dem Login kopieren
Benutzeroberfläche für persönliche Informationen anzeigen
api: /api/v1/user/userName  (post,请求头带token)

params: {
    userName: String,
}

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

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

data: {
    userName: 用户名,
    userEmail: 用户邮箱,
    age: 年龄,
    city: 城市,
    ......
}
Nach dem Login kopieren
Benutzeroberfläche für persönliche Informationen ändern
api: /api/v1/user/userName (put,token)

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

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

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

data: {
    userName: 用户名,
    ......
}
Nach dem Login kopieren

Kodierungsimplementierung

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: {},
};
Nach dem Login kopieren

Definieren Sie unsere Schemadatei im Modellordner:

const UserSchema = new Schema({
    userName: { type: String, unique: true, required: true, },
});
Nach dem Login kopieren

Routendefinition:

router.post('/api/v1/signup', controller.user.signup);
Nach dem Login kopieren

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;
    }
}
Nach dem Login kopieren

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;
    }
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage