Nestjs路由Get请求数据

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

控制器的目的是接收应用的特定请求。路由机制控制哪个控制器接收哪些请求。通常,每个控制器有多个路由,不同的路由可以执行不同的操作。


1、可以通过NestCLi创建控制器:

nest g controller article
表示创建article的控制器,这个时候会在src目录下面生成一个article的文件夹,这个里面就是article的控制器,代码如下
	
import { Controller } from '@nestjs/common';

@Controller('article')
export class ArticleController {

    
}

创建好控制器后,nestjs会自动的在 app.module.ts 中引入ArticleController,代码如下:

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ArticleController } from './article/article.controller'
	
@Module({
	imports: [
		 ],
	controllers: [AppController, ArticleController],
	providers: [AppService],
})
export class AppModule {}
	

如果我们要访问控制器中的方法就需要配置路由


2、Nestjs路由配置Get请求数据

下面代码定义了一个新闻控制器。装饰器为@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里面的Add’;
	  }
	
	}	

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

3、Nestjs路由配置Get传参

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

在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 ‘增加新闻’        
  }
}