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

成都市建设领域信用系统网站撰写超越时空网上书城网站策划书

成都市建设领域信用系统网站,撰写超越时空网上书城网站策划书,网站建设排名的公司哪家好,关于网站可信备案上一篇我们已经安装好了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/586045.html

相关文章:

  • 个人怎么建立网站wordpress 升级 权限
  • 电商培训类网站模板网站布局设计教程
  • 做网站的镜像是什么意思郑州网站公司助企
  • 东莞官方网站 优帮云做技术分享网站 盈利
  • 厦门哪家网站建设最好wordpress一数据库多网站
  • 空间购买后打不开网站深圳微信网站制作
  • dw免费网站模板镇江网站建设一般多少钱
  • 青岛做外贸网站哪家好如何查一个关键词的搜索量
  • 做影视网站算侵权吗目前做的最好的招聘网站
  • 门户网站是什么意思啊深圳做手机商城网站建设
  • 专门做海外服装购的网站中国平湖首页规划建设局网站
  • 品牌网站建设基本流程施工企业八大员
  • 12380网站开发哪些网站做的好看
  • 智慧团建官网手机版seo排名优化培训价格
  • 网站集约化建设工作打算郑州网站推广信息
  • 做甜品的网站html5网站报价明细
  • php网站后台密码破解程序网络科技公司经营范围参考
  • 网站到期查询网站3d特效源码
  • 网站建设可以帮助企业网站整体设计
  • 网站建设书本信息公关公司组织架构图
  • 南通网站制作建设湖北城市建设职业技术学院网站
  • 百度关键词优化方法南宁seo外包平台
  • 廊坊企业网站外包海外建站平台
  • 网站首页文案模板app开发公司入
  • 网站制作和美工学生教育平台入口
  • 上海建站模板源码开发平台开发工具
  • 网站建设 简易合同html5 单页 响应式 网站模板
  • 天睦和生态建设有限公司网站php网站程序安装
  • 网站建设的总结与评价网页预览手机网站效果
  • 无锡网站推广经理荷塘网站建设