今天我們要來介紹怎麼用 Cursor 來做註冊頁面。但在實作之前需要知道一下一些軟體。
Postman 是一個非常強大的 API 測試工具,可以幫助你模擬發送 HTTP 請求來測試你的 API。這次我們會利用 Postman 來測試 Nest.js 的註冊 API,並檢查回應是否正確(例如:檢查生成的 PDF 檔案)。
打開 Postman,點擊 "New",選擇 "HTTP Request"。
在 URL 欄位輸入 API 的路徑,例如:POST http://localhost:3000/register
切換到 Body,選擇 raw 和 JSON,並填入以下內容作為註冊用戶的資料:
{
"username": "your_username",
"email": "your_email@example.com",
"password": "your_password",
"account": "your_account"
}
這是一個簡單的 Nest.js 註冊 API,使用者可以通過這個 API 提交註冊資訊,然後將數據儲存在 MongoDB 資料庫中。
user.schema.ts
- 定義用戶模型在這部分,我們使用 Mongoose 來定義數據結構(也就是「模型」),該模型描述了數據應該如何在 MongoDB 中儲存。在這個例子中,我們定義了一個 UserSchema,它包含三個欄位:username
、password
和 email
。
user.schema.ts
import { Schema } from 'mongoose';
export const UserSchema = new Schema({
username: String, // 用戶名
password: String, // 密碼
email: String, // 郵箱
});
這段代碼定義了一個 User 模型,這個模型對應 MongoDB 中的集合(collection)。每個用戶都會有三個屬性:username
、password
和 email
。當我們將用戶資料儲存進 MongoDB 時,這些資料會自動符合這個結構。
users.service.ts
- 用戶服務UsersService
是一個提供者(Provider),它負責處理所有與用戶相關的業務邏輯。在這裡,UsersService
包含一個 create()
方法,用來創建一個新的用戶並將其儲存到 MongoDB 中。
users.service.ts
import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { User } from './interfaces/user.interface';
@Injectable()
export class UsersService {
constructor(@InjectModel('User') private userModel: Model<User>) {}
// 創建新用戶
async create(userData: any): Promise<User> {
const createdUser = new this.userModel(userData); // 創建一個新的用戶實例
return createdUser.save(); // 儲存到 MongoDB 中
}
}
在這裡,@InjectModel('User')
用來將我們之前定義的 User 模型 注入到服務中,這樣我們可以操作 MongoDB 的用戶資料。create()
方法負責接收傳入的用戶資料,然後將其儲存到資料庫中。
users.controller.ts
- 用戶控制器控制器(Controller)負責處理進入的 HTTP 請求,並返回對應的響應。在這裡,UsersController
有一個 POST 路由 /register
,用來處理用戶的註冊請求。
users.controller.ts
import { Controller, Post, Body } from '@nestjs/common';
import { UsersService } from './users.service';
@Controller('register')
export class UsersController {
constructor(private readonly usersService: UsersService) {}
@Post()
async register(@Body() userData: any) {
// 調用 UsersService 的 create 方法,將用戶資料儲存到資料庫中
return this.usersService.create(userData);
}
}
這段代碼中,我們定義了一個 POST 路由 /register
,當接收到 HTTP POST 請求時,它會調用 UsersService
的 create()
方法來創建新用戶。這個請求會接受用戶的 username
、password
和 email
作為請求體(@Body()
),並將其傳給服務層進行處理。
users.module.ts
- 用戶模組UsersModule
是用來組織和管理相關控制器和服務的模組。Nest.js 使用模組來管理應用程式的結構,讓每個功能區域(例如用戶管理)都能保持獨立並易於維護。
users.module.ts
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { UsersController } from './users.controller';
import { UsersService } from './users.service';
import { UserSchema } from './schemas/user.schema';
@Module({
imports: [MongooseModule.forFeature([{ name: 'User', schema: UserSchema }])],
controllers: [UsersController],
providers: [UsersService],
})
export class UsersModule {}
這裡的 UsersModule
將 User 模型(UserSchema
)註冊到 Mongoose 中,然後將 UsersController
和 UsersService
注入到這個模組中。這樣一來,我們的應用程式就能夠處理與用戶相關的請求和業務邏輯。
使用 Postman 發送 POST
請求來測試註冊 API:
POST http://localhost:3000/register
Body 中可以提供以下 JSON 格式的數據:
{
"username": "your_username",
"email": "your_email@example.com",
"password": "your_password",
"account": "your_account"
}
接著可以看到結果。
P.S. 我會再回來修改這篇,今天朋友來家裡烤肉有點忙QQ