ホームページ >ウェブフロントエンド >jsチュートリアル >技術記事: Egg.js を使用してバックエンド サービス API を構築する (コレクション シリーズ)
私はjsを勉強していたときにEgg.jsに出会い、詳しく勉強しました。Alibabaが立ち上げたKoaをベースにしたノード開発フレームワークです。エンタープライズレベルのフレームワークとアプリケーションのために生まれました。バックエンド サービス API を構築する方法については、さらに検討する必要があります。この記事ではバックエンドサービスAPIを構築するためのEgg.jsを中心に紹介しますので、必要に応じて参照してください。
通常の開発はフロントエンドとバックエンドの分離に基づいているため、Eggを使用してバックエンドサービスを作成し、他のプロジェクトと連携するためのAPIインターフェースのセットを書くことを考えました。このプロジェクトの技術スタックは、Egg.js、MongoDB、および mongoose を使用します。この記事では、登録およびログイン モジュールとユーザー センター モジュールを作成するプロセスを記録します。その目的は、学習プロセスをタイムリーに要約し、文書化のスキルを発揮し、全員と共有してコミュニケーションを図り、一緒に進歩することです。
プロジェクトアドレス: Egg-API
プロジェクトは継続的に更新されます。気に入っていただけましたら、いいね、フォロー、スター、フォークをお願いします。 _
登録およびログインモジュールの場合、要件分析は次のとおりです:
新しいユーザーとして登録し、入力されたデータを確認します
にログインするにはシステムでは、入力されたデータはトークン認証に基づいて検証される必要があります
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: 用户名, ...... }
// config/plugin.js exports.mongoose = { enable: true, package: 'egg-mongoose', }; // config/config.default.js config.mongoose = { url: 'mongodb://127.0.0.1/apiExample', options: {}, };モデル フォルダーにスキーマ ファイルを定義します:
const UserSchema = new Schema({ userName: { type: String, unique: true, required: true, }, });ルート定義:
router.post('/api/v1/signup', controller.user.signup);コントローラーの書き込み: Parse ユーザー用入力し、処理後に対応する結果を返します。取得したデータを 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; } }サービスの作成: ビジネス ロジック層の作成に使用され、再利用できます。複雑なデータの処理。たとえば、表示する情報をデータベースから取得するか、サードパーティのサービスを呼び出す必要があります。
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; } }単純なノードアプリケーションの構造は次のようになり、Egg.js がインターフェースサービスを担当します。 apache php mysql関連記事:
サーバーエンタープライズ Web サイトのバックエンド構築の問題
関連ビデオ:以上が技術記事: Egg.js を使用してバックエンド サービス API を構築する (コレクション シリーズ)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。