it营大地专栏

NestJS中的路由

发布于 2 个月前 作者 phonegap100 171 次浏览 最后一次编辑是 2 个月前 来自 分享

1、NestJS中的路由

Nestjs中没有单独配置路由的地方。定义好控制器后nestjs会自动给我们配置对应的路由。

下面代码定义了一个新闻控制器。装饰器为@Controller(‘article’),装饰器参数里面的’article’就是我们的路由。

如果我们要返回index方法里面的内容我们在浏览器输入 http://localhost:3000/article 如果我们要返回add方法里面的内容我们在浏览器输入 http://localhost:3000/article/add

import { Controller, Get } from ‘@nestjs/common’;

@Controller(‘article’) export class ArticleController { @Get() index(): string { return ‘这是article里面的index’; } @Get(‘add’) add(): string { return ‘这是article里面的index’; }

}

关于nest的return: 当请求处理程序返回 JavaScript 对象或数组时,它将自动序列化为 JSON。但是,当它返回一个字符串时,Nest 将只发送一个字符串而不是序列化它。这使响应处理变得简单:只需要返回值,Nest 负责其余部分。

2、NestJS中的Get Post以及通过方法参数装饰器获取传值

1、首先看一个Get Post请求的例子,注意我们使用nestjs内置装饰器的时候必须得在@nestjs/common模块下面引入对应的装饰器。

import { Controller, Get, Post } from ‘@nestjs/common’;

@Controller(‘cats’)export class CatsController { @Post() create(): string { return ‘This action adds a new cat’; }

@Get() findAll(): string { return ‘This action returns all cats’; }}

Nestjs也提供了其他HTTP请求方法的装饰器 @Put() 、 @Delete()、 @Patch()、 @Options()、 @Head()和 @All()

3、Nestjs中获取请求参数

在Nestjs中获取Get传值或者Post提交的数据的话我们可以使用Nestjs中的装饰器来获取。

@Request() req @Response() res @Next() next @Session() req.session @Param(key?: string) req.params / req.params[key] @Body(key?: string) req.body / req.body[key] @Query(key?: string) req.query / req.query[key] @Headers(name?: string) req.headers / req.headers[name]

import { Controller, Get, Post } from ‘@nestjs/common’; @Controller(‘news’) export class NewsController { @Get() getAbout(@Query() query):string { console.log(query); //这里获取的就是所有的Get传值 return ‘这是about’
} @Get(‘list’) getNews(@Query(‘id’) query):string { console.log(query); //这里获取的就是Get传值里面的Id的值 return ‘这是新闻’
} @Post(‘doAdd’)
async addNews(@Body() newsData){
console.log(newsData); return ‘增加新闻’
} }

4、NestJS中的动态路由

当您需要接受动态数据作为请求的一部分时,具有静态路径的路由将不起作用(例如,GET /cats/1)获取具有id的cat 1)。为了定义带参数的路由,我们可以在路由中添加路由参数标记,以捕获请求 URL 中该位置的动态值。@Get() 下面的装饰器示例中的路由参数标记演示了此用法。可以使用 @Param() 装饰器访问以这种方式声明的路由参数,该装饰器应添加到函数签名中。

@Get(’:id’) findOne(@Param() params): string { console.log(params.id); return This action returns a #${params.id} cat; }

回到顶部