首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

为什么不学基于TypeScript的Node.js服务端开发?

NestJS这个框架算是到目前为止,对TypeScript支持的最好的一个Node.js服务端框架了,它的上层框架实现了一套通用的框架机制:模块、自定义装饰器、依赖注入、控制器、过滤器、管道、守卫、中间件和拦截器等功能...;在框架下层,通过适配器适配到其他一些符合其理念的基础HTTP框架Express、Fastify等。...假如这段代码运行起来,它可以被通过这样的URL进行访问:http://use-your-domain/products 是不是挺有意思?...今天我就这么简单的扯一通,我准备在后面的文章或视频教程,一点一点和大家深入探讨TypeScript和NestJS的各种功能特性。...GraphQL;以及如何使用Docker进行服务部署等相关的内容。

3.4K30

Nest.js JWT 验证授权管理

检查有效期:检查载荷的声明,例如过期时间(exp)和生效时间(nbf),确保令牌在有效时间范围内。可选的其他验证:根据需要,可能还会验证其他声明,发行者(iss)、受众(aud)等。...同时,由于JWT本身包含了用户信息,因此在传输过程需要采取适当的安全措施,使用HTTPS来保护通信。...在守卫,我们 可以 通过 this.reflector.getAllAndOverride 拿到哪些路由不需要验证,可以直接访问路由。...token : undefined; }}验证是否成功当我们给 Controller 或者 Controller 的方法 加了 @Public装饰器,那么访问时,路由是不需要验证的,因为我们在守卫中放行了...token 验证的路由时,如果没有携带token 的话,会没有权限访问接口因为我们把守卫 挂载到全局了,不需要每个Controller 上挂载了@Controller('author')// @UseFilters

64021

使用NestJsGraphQL、TypeORM搭建后端服务

image.png 3.2、改造app.module.ts 从@nestjs/typeorm引入NestJs与TypeORM连接模块*TypeOrmModule,然后传入一个Object作为与数据库链接的...此前有提到,在NestJs里面万物皆是Module,所以这里的TypeORM也是作为一个子Module添加到整个服务。所以它的位置应该在imports这里。...@nestjs/graphql,这里我们直接使用@nestjs/graphql。...的方法,代码如下: import { Resolver, Query, Mutation, Args } from '@nestjs/graphql' import { PokemonEntity }...结语 其实总体来说,整个NestJs应用的开发体验还是蛮好的,相关的生态也发展的比较成熟,本项目仅是对相关技术的一个整体尝试,实际在开发过程遇到的还有很多别的问题,比如GraphQL的N+1查询问题,

6.5K10

BFF与Nestjs实战

Module,字面意思是模块,在nestjs由@Module()修饰的class就是一个Module,在具体项目中我们会将其作为当前子模块的入口,比如一个完整的项目可能会有用户模块,商品管理模块,人员管理模块等等...,也就是上文目录的main.ts,代码如下: main.ts import {NestFactory} from '@nestjs/core'; import {AppModule} from '....Middleware 中间件 Nestjs是对Express的二次封装,Nestjs的中间件等价于Express的中间件,最常用的场景就是全局的日志、跨域、错误处理、cookie格式化等较为常见的...api服务应用场景,官方解释如下: 中间件函数能够访问请求对象 (req)、响应对象 (res) 以及应用程序的请求/响应循环中的下一个中间件函数。...Guard 守卫 守卫,其实就是路由守卫,就是保护我们写的接口的,最常用的场景就是接口的鉴权,通常情况下对于一个业务系统每个接口我们都会有登录鉴权,所以通常情况下我们会封装一个全局的路由守卫,我们在项目的

2.6K10

快速打开 Nestjs 的世界

负责订单 CRUD 的服务; controllers 注册订单控制器模块,:负责订单 CRUD 的路由处理; imports 注册与订单相关联的模块,:与订单关联的用户查询服务; exports 导出订单提供者模块...读取请求对象 请求对象表示一个 HTTP 请求所携带的数据信息,请求数据的查询参数、路由参数、请求头、请求体等数据。.../middleware 中间件是在路由处理程序前调用的函数,除了可以访问请求对象和响应对象以外还有中间件提供的 next() 函数。...const app = await NestFactory.create(AppModule); app.use(logger); await app.listen(3000); PS:在全局中间件访问..., }, ], }) export class AppModule {} 学习守卫的使用 图片来自:docs.nestjs.com/guards 在服务运行时根据特定的条件来允许或阻止请求是否要被路由程序处理的任务是由守卫承担

34610

基于Nest快速构建Web应用

这里简单介绍一下什么是Nestjs Nestjs是一个用于构建高效且可伸缩的服务端应用程序的渐进式 Node.js 框架。...7.5.1 核心包 @nestjs/config 环境变量治理 @nestjs/swagger 生成接口文档 swagger-ui-express 装@nestjs/swagger 必装的包 处理接口文档样式...└─utils # 工具类 使用 开始开发 复制根目录下default.env文件,重命名为.env文件,修改其配置 yarn start:dev 开始开发 本地新建数据库,Redis,修改.env相关配置...EAMIL_AUTH_USER = xxxxx EMAIL_AUTH_PASSWORD = xxxxx EMAIL_FROM = "FAST_NEST_TEMP ROBOT" 主要功能 基于守卫封装授权守卫...,用于校验是否需要登录才可访问资源 # /guard/auth.guard.ts @Injectable() export class AuthGuard implements CanActivate

1.6K10

如何使用 NestJs、PostgreSQL、Redis 构建基于用户设备的授权验证

设备认证是验证设备身份和合法性的过程,该设备试图访问系统或应用程序。当设备身份得到验证后,设备授权便着重于确定它在应用程序可以执行哪些操作。...创建身份验证守卫 一个守卫将通过要求请求存在有效的JWT来帮助我们保护终端点。此外,我们还将确保请求是由有效用户设备发出的。...注意:在 line 36 ,我们将用户有效负载添加到请求对象。这样我们就可以在路由处理程序访问它。我们将在本文的注销部分中看到这一点。...我们导入了身份验证守卫,以验证用户在访问 /auth/hello 路由时的设备。...这将在身份验证控制器和身份验证服务实现。在身份验证控制器,我们将添加我们创建的守卫,并将请求对象传递给我们将创建的服务函数。

30220

Nest.js 从零到壹系列(三):使用 JWT 实现单点登录

SSO的定义是在多个应用系统,用户只需要登录一次就可以访问所有相互信任的应用系统。...可以先不管,这是因为还没有把 JwtService 和 UserService 关联到 auth.module.ts 。 5....,并在 imports 数组添加 AuthModule 即可: // src/app.module.ts import { Module } from '@nestjs/common'; import...前端拿到这个 token,就可以请求其他有守卫的接口了。 接下来我们试试输错账号或密码的情况: ? ? 五、守卫 既然发放了 Token,就要能验证 Token,因此就要用到 Guard(守卫)了。...此时,已经可以正常访问了,再看看控制台打印的信息,步骤也正如代码中注释的那样: ? 至此,单点登录功能已基本完成。

5K61

Nest.js 实战系列四:使用中间件、拦截器、过滤器打造日志系统

首先,一个良好的服务端,应该有较完善的日志收集功能,这样才能在生产环境发生异常时,能够从日志复盘,找出 Bug 所在。 其次,要针对项目中抛出的异常进行归类,并将信息反映在接口或日志。...可以看到,出参的日志已经出来了,User 为 undefiend 是因为登录接口没有使用 JWT 守卫,若路由加了 @UseGuards(AuthGuard('jwt')),则会把用户信息绑定在 req...对于典型的基于 HTTP REST/GraphQL API 的应用程序,最佳实践是在发生某些错误情况时发送标准 HTTP 响应对象。...我们在 main.ts 引入 http-exception: // src/main.ts import { NestFactory } from '@nestjs/core'; import { AppModule...已经有了明显的区别,再看看 errors.log,也写进了日志: ? 如此一来,代码未捕获的错误也能从日志查到了。

5.3K20

Nest.js 从零到壹系列(四):使用中间件、拦截器、过滤器打造日志系统

首先,一个良好的服务端,应该有较完善的日志收集功能,这样才能在生产环境发生异常时,能够从日志复盘,找出 Bug 所在。 其次,要针对项目中抛出的异常进行归类,并将信息反映在接口或日志。...可以看到,出参的日志已经出来了,User 为 undefiend 是因为登录接口没有使用 JWT 守卫,若路由加了 @UseGuards(AuthGuard('jwt')),则会把用户信息绑定在 req...对于典型的基于 HTTP REST/GraphQL API 的应用程序,最佳实践是在发生某些错误情况时发送标准 HTTP 响应对象。...我们在 main.ts 引入 http-exception: // src/main.ts import { NestFactory } from '@nestjs/core'; import { AppModule...已经有了明显的区别,再看看 errors.log,也写进了日志: ? 如此一来,代码未捕获的错误也能从日志查到了。

6.4K73

写在 2021: 值得关注学习的前端框架和工具库

对于我认为较为主流的则不会包含(Vue与React框架本身这种~)。...NodeJS NestJS[24],一个大而全的Node框架,就像NodeJS里的Angular,实际上作者也是受到了Angular的影响,很多装饰器都和Ng的同名。...因为确实NodeJS目前没有特别全面的框架(虽然NestJS在Spring面前也是弟弟)。...GraphQL-Code-Generator[48],很强大的工具,从.graphql文件到语言可以直接使用的方法/类型定义,这个思想实际上各个语言都有,Dart和Ruby等。...在TS这个工具的主要能力就是生成TS的类型定义,同时它的插件体系还提供了更多的额外能力,Apollo-Client的插件,让你可以直接使用封装好的的useXXXQuery等,前端连查询语句都不用写了

4.1K10

Nest.js 从零到壹系列(六):用 15 行代码实现 RBAC 0

RBAC:基于角色的权限访问控制(Role-Based Access Control),是商业系统中最常见的权限管理技术之一。...在 RBAC ,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。 2....【运行时互斥】:例如,允许一个用户具有两个角色的成员资格,但在运行不可同时激活这两个角色。...总结 本篇介绍了 RBAC 的概念,以及如何使用拦截器和守卫实现 RBAC 0,原理简单到 15 行代码就搞定了。...但万变不离其宗,基本就是在拦截器或守卫里做文章,用户登录后,将权限列表缓存起来(可以是 Redis),这样就不用每次都查表去判断有没有权限访问路由了。

3.4K30

写在2021: 值得关注学习的前端框架和工具库

NodeJS NestJS,一个大而全的Node框架,就像NodeJS里的Angular,实际上作者也是受到了Angular的影响,很多装饰器都和Ng的同名。...因为确实NodeJS目前没有特别全面的框架(虽然NestJS在Spring面前也是弟弟)。...还提供了中间件(注意和服务端框架的中间件区分)、鉴权(推荐GraphQL API的鉴权只使用它提供的)、扩展、指令、联合类型等。作者也很厉害,提供了和NestJS以及Prisma各自的集成包。...GraphQL-Code-Generator,很强大的工具,从.graphql文件到语言可以直接使用的方法/类型定义,这个思想实际上各个语言都有,Dart和Ruby等。...在TS这个工具的主要能力就是生成TS的类型定义,同时它的插件体系还提供了更多的额外能力,Apollo-Client的插件,让你可以直接使用封装好的的useXXXQuery等,前端连查询语句都不用写了

2.8K10

Nest.js 从零到壹系列(八):使用 Redis 实现登录挤出功能

Redis 使用单进程单线程模型的(K,V)数据库,将数据存储在内存,存取均不会受到硬盘 IO 的限制,因此其执行速度极快。...redis: { + port: '线上 Redis 端口', + host: '线上 Redis 域名', + db: '库名', + password: 'Redis 访问密码...调整守卫策略 这里本来想新建一个 token.guard.ts 的,但后面感觉每个路由又全加一遍,很麻烦,故直接调整 rbac.guard.ts: // src/guards/rbac.guard.ts...== cache) { + // 如果 token 不匹配,禁止访问 + throw new UnauthorizedException('您的账号在其他地方登录,请重新登录');...总结 本篇介绍了如何在 Nest 中使用 Redis,并实现登录挤出的功能,稍稍弥补了 JWT 策略的缺陷。这里只是抛出一个“挤出”的思路,不局限于做在守卫上,如果有更好的思路,欢迎下方留言讨论。

2.3K63

使用NestJS框架实现微信的自动回复消息功能

要用NestJS框架开发微信自动回复消息功能,需要遵循以下步骤: 创建一个NestJS项目,并安装相关依赖。 配置微信公众号或小程序的AppID、AppSecret、Token等信息。...使用NestJS框架开发微信自动回复消息功能有以下好处: NestJS框架提供了清晰、灵活、高效的编程模式,让代码更容易阅读、测试和维护。...NestJS框架支持多种常用技术栈,TypeScript、GraphQL、MongoDB等,让你可以根据需求选择合适的工具。...const buffer: any[] = []; // 创建一个空数组,用于存储请求的数据 // 监听 req 的 data 事件,每当有数据到达时,就将数据推入 buffer 数组...const msgXml = Buffer.concat(buffer).toString('utf-8'); // 调用 parseString 函数,将 msgXml 变量

3.3K40
领券