当前位置: 首页 > 工具软件 > JSController > 使用案例 >

nestJS中的控制器,路由,Get,Post方法参数装饰器

饶铭
2023-12-01

nestJS中的控制器

  • nestJS中的控制器负责处理传入的请求,并返回对客户端的响应

  • 创建控制器:nest g controller news

    • 运行后会在src目录下创建新的文件夹,其中包含控制器文件和服务文件,而且同时更新的app.module.ts
    //控制器文件
    import { Controller, Get} from '@nestjs/common';
    @Controller('news')
    export class NewsController {
    
       //http://localhost:3000/news
       
       @Get()		 //get装饰器后面可以配置对应路由,Get()如果为空,则默认匹配news,如果Get('add')则匹配news/add
       index(){ 		//使用方法需要匹配路由,匹配路由需要给index方法加一个装饰器
       	return "你好,我是新页面"
       }
    }
    
  • 控制器文件 中@Controller('news')news参数为访问路径后的参数,如将上面代码中的@Controller('news')修改为@Controller('aaaa')则访问路径变为http://localhost:3000/aaaa
    装饰器中的方法名字可以随意写

NestJS中的路由

  • nestjs中没有单独配置路由的地方,定义好控制器后nestjs会自动配置对应的路由
  • @Controller('news')装饰器中的参数决定路由,news就是路由
  • 在nestjs中获取Get传值或者post提交的数据可以使用nestjs中的装饰器来获取
方法参数装饰器:

方法参数装饰器同样需要在import { Controller, Get, Query} from '@nestjs/common';中引入

1. @Request() -------Get |req
//Get方式接收参数
	@Get('edit')
	edit(@Request() req){
		console.log(req.query)
		return req.query
	}
2.@Response() |res
3.@Next() |next
4.@Session() |req.session
5.@Param(key?: string) |req.params / req.params[key]
//获取动态路由参数
@Get(":id")
	dong(@Param() param){
		console.log(param)
		return param
	}
6.@Body(key?: string)-----Post |req.body / req.body[key]
//Post方式接收参数
	@Post('create')
	create(@Body() body){
		console.log(body)
		return body
	}
7.@Query(key?: string)-----Get |req.query /req.query[key]
//Get方式接收参数
	@Get('add')
	add(@Query() query){
		console.log(query)
		return query
	}
8.@Headers(name?: string) |req.headers / req.headers[name]
NestJS也提供了其他HTTP请求方法的装饰器:

@Put(), @Delete(), @Patch(), @Options(), @Head(), @All()

模糊匹配
@Get('a*a')
index(){
	//localhost:3000/user/aba
	return "模糊匹配路由"
}

nestjs中的装饰器

装饰器的作用就是可以扩展类,方法,属性,方法参数的功能
  • 类装饰器
  • 方法装饰器
  • 属性装饰器
  • 方法参数装饰器
 类似资料: