当前位置: 首页 > wzjs >正文

分销商城搭建关键词优化公司排行

分销商城搭建,关键词优化公司排行,打金传奇rmb回收,国外做螺栓比较好的网站上一篇我们已经安装好了nestjs,可以在浏览器看到hello,world的结果。接着我们就要熟悉一下如何使用nestjs开发后台API了。本篇介绍如何用提示词一步步的搭建。 1 安装依赖 打开我们的trae,在对话框里输入如下提示词 帮我安装 bcrypt 以及 jwt 认证相关…

上一篇我们已经安装好了nestjs,可以在浏览器看到hello,world的结果。接着我们就要熟悉一下如何使用nestjs开发后台API了。本篇介绍如何用提示词一步步的搭建。

1 安装依赖

打开我们的trae,在对话框里输入如下提示词

帮我安装 bcrypt 以及 jwt 认证相关依赖

在这里插入图片描述

2 创建用户模块

使用如下命令创建一个用户模块

npx --yes @nestjs/cli g module users

命令执行完毕后,可以在大纲树里看到多了一个users文件夹,里边多了一个users.model.ts
在这里插入图片描述

3 创建DTO对象

输入如下提示词,让ai帮我们生成文件

生成两个 DTO 用于用户注册和登录。分别为 RegisterDto 和 LoginDto,包含必要的字段

在这里插入图片描述
生成的代码有报错,鼠标移动到出错的位置上,点击AI修复,让AI自动修复。这里AI给出的建议是安装必要的依赖

npm install class-validator --save

在终端安装好依赖我们的代码就不报错了
在这里插入图片描述
login.dto.ts

import { IsNotEmpty, IsString, MinLength } from 'class-validator';export class LoginDto {@IsNotEmpty({ message: '用户名不能为空' })@IsString({ message: '用户名必须是字符串' })username: string;@IsNotEmpty({ message: '密码不能为空' })@IsString({ message: '密码必须是字符串' })@MinLength(6, { message: '密码长度不能少于6个字符' })password: string;
}

register.dto.ts

import { IsEmail, IsNotEmpty, IsString, MinLength } from 'class-validator';export class RegisterDto {@IsNotEmpty({ message: '用户名不能为空' })@IsString({ message: '用户名必须是字符串' })username: string;@IsNotEmpty({ message: '邮箱不能为空' })@IsEmail({}, { message: '请输入有效的邮箱地址' })email: string;@IsNotEmpty({ message: '密码不能为空' })@IsString({ message: '密码必须是字符串' })@MinLength(6, { message: '密码长度不能少于6个字符' })password: string;
}

4 创建用户实体(User Entity)与服务

我们目前不集成数据库,使用数组来存储用户的数据

4.1 创建实体

输入如下提示词

帮我创建一个用户的实体

在这里插入图片描述
文件生成后依然是有报错的,上边已经有了方案,我们需要把自动生成的代码依赖的包安装一下

npm install typeorm --save
npm install @nestjs/typeorm --save

4.2 创建 UsersService

在终端里输入如下命令创建UsersService

npx --yes @nestjs/cli g service users 

在这里插入图片描述
业务逻辑我们也使用提示词进行生成,输入如下提示词

users.service.ts 完善一下这个类,实现一下用户的注册、登录功能,包含必要的校验逻辑,使用数组存储数据

这里要说明的是,因为文件已经创建了,我们可以使用引用的模式告诉大模型我要写入哪个文件

在这里插入图片描述
users.service.ts

import { Injectable, ConflictException, UnauthorizedException } from '@nestjs/common';
import * as bcrypt from 'bcrypt';
import { User } from './entities/user.entity';
import { RegisterDto } from './dto/register.dto';
import { LoginDto } from './dto/login.dto';@Injectable()
export class UsersService {private users: User[] = [];async register(registerDto: RegisterDto): Promise<User> {const { username, email, password } = registerDto;// 检查用户名是否已存在const existingUsername = this.users.find(user => user.username === username);if (existingUsername) {throw new ConflictException('用户名已存在');}// 检查邮箱是否已存在const existingEmail = this.users.find(user => user.email === email);if (existingEmail) {throw new ConflictException('邮箱已被注册');}// 创建新用户const user = new User();user.username = username;user.email = email;user.password = await bcrypt.hash(password, 10);this.users.push(user);return user;}async login(loginDto: LoginDto): Promise<User> {const { username, password } = loginDto;// 查找用户const user = this.users.find(user => user.username === username);if (!user) {throw new UnauthorizedException('用户名或密码错误');}// 验证密码const isPasswordValid = await bcrypt.compare(password, user.password);if (!isPasswordValid) {throw new UnauthorizedException('用户名或密码错误');}return user;}
}

5 创建认证服务(AuthService)

接下来,我们创建一个用于处理登录、生成 JWT 的认证服务。我们创建一个新的模块auth模块来搭建对应的服务,在终端输入如下命令来创建模块

npx --yes @nestjs/cli g module auth

在这里插入图片描述
然后再创建相应的service

npx --yes @nestjs/cli g service auth

然后让大模型帮你完善一下service的逻辑
auth.module.ts

import { Module } from '@nestjs/common';
import { JwtModule } from '@nestjs/jwt';
import { AuthService } from './auth.service';
import { UsersModule } from '../users/users.module';
import { jwtConstants } from './constants';@Module({imports: [UsersModule,JwtModule.register({secret: jwtConstants.secret,signOptions: { expiresIn: jwtConstants.expiresIn },}),],providers: [AuthService],exports: [AuthService],
})
export class AuthModule {}

auth.service.ts

import { Injectable, UnauthorizedException } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
import { UsersService } from '../users/users.service';
import { LoginDto } from '../users/dto/login.dto';@Injectable()
export class AuthService {constructor(private usersService: UsersService,private jwtService: JwtService,) {}async login(loginDto: LoginDto) {const user = await this.usersService.login(loginDto);const payload = { username: user.username, sub: user.id };return {access_token: this.jwtService.sign(payload),};}
}

constants.ts

export const jwtConstants = {secret: 'your-secret-key',  // 在生产环境中应该使用环境变量expiresIn: '1h',  // token过期时间
};

6 创建 Auth 控制器(AuthController)

在终端输入如下命令,来创建controller

npx --yes @nestjs/cli g controller auth

在这里插入图片描述
创建好之后要求大模型完善逻辑,限定dto使用现有的不要新建

完善一下代码,dto用我已经创建好的register和login不要新建

在这里插入图片描述

7 将模块集成到应用中

确保在主模块(通常为 app.module.ts)中引入了 AuthModule,这样认证相关的路由才能生效。输入如下提示词

在主模块中引入auth模块

8 测试接口

让大模型来帮我们生成测试脚本,输入如下提示词

帮我写个简易的测试脚本,用于测试 /auth/register 和 /auth/login 接口

他会自动创建脚本
在这里插入图片描述
脚本创建好之后可以输入如下命令来执行自动测试

npm run test:e2e
http://www.dtcms.com/wzjs/241284.html

相关文章:

  • 自己做公司的网站手机搭建网站
  • 客服外包平台有哪些上海优化seo排名
  • bootstrap网站开发教程帮别人发广告赚钱平台
  • dw做一个小网站教程哪些网站可以免费发广告
  • 电商网站建设哪家公司好关键词智能优化排名
  • 备案成功后多久可以打开网站江西seo推广软件
  • 吕子乔做网站一段台词站长工具查询网站信息
  • 山东省政府办公厅马希军廊坊优化外包
  • 做网站用别人图片文章会侵权吗四川旅游seo整站优化站优化
  • 学校网站建设目的及功能定位惠州seo网络推广
  • 深圳知名网站建设公司优化人员是什么意思
  • 珠海网站建设哪家权威外贸订单一般在哪个平台接
  • 有域名之后怎么做网站建站平台
  • 网站里的个人中心下拉列表怎么做常见的网站推广方式
  • 手机企业网站怎么做网络营销一般月薪多少
  • 做酒店网站所用到的算法网站怎么注册
  • 做擦边球网站会不会违法呢深圳宝安seo外包
  • 网站详情页怎么做的发布软文的平台有哪些
  • 宿迁哪里有做网站开发的常州网站推广
  • 小型网站开发有哪些搜索引擎
  • 运营网站挣钱方法百度关键词搜索工具
  • 浙江网站建设公司广州推广工具
  • 邯郸网站建设方案培训课程设计
  • 做地产网站seo的基本内容
  • b2b网站分类seo是什么意思职业
  • 即墨网站建设哪家好我赢网seo优化网站
  • 新的网站设计制作免费外国网站浏览器
  • 这几年做哪些网站能致富百度一下你就知道
  • 网络网站开发成都seo网站qq
  • 几何印花图案设计网站南京广告宣传公司seo