NestJS:基础掌握 从了解到使用(下)

简介: NestJS:基础掌握 从了解到使用(下)

七、Controller控制器 Get 请求

7.1、get请求 -- 带参数

src/products/products.controller.ts

@Get('/getProductsById')
// @Request()装饰器
// getProductsById(@Request() req):any{
//     let id:number = parseInt(req.query.id)
//     return this.productsService.getProductsById(id)
// }
// @Query()装饰器
getProductsById(@Query() query):any{
   let id:number = parseInt(query.id)
   return this.productsService.getProductsById(id)
}

src/products/products.service.ts

getProductsById(id:number){
        let resJson:any = {}
        switch (id) {
            case 1:
                resJson = {id:1, name: 'huawei', type: 'shouji'}
            break;
            case 2:
                resJson = {id:2, name: 'changcheng', type: 'qiche'}
            break;
            case 3:
                resJson = {id:3, name: 'biyadi', type: 'qiche'}
            break;
        }
        return resJson;
    }

RESTClient/demo.http

7.2、Get请求-@Request()装饰器-动态参数id

src/products/products.controller.ts

// Get请求-@Request()装饰器-动态参数id
    @Get('/getProductsByIdRouter/:id')
    getProductsByIdRouter(@Request() req):any{
        console.log()
        let id:number = parseInt(req.params.id)
        return this.productsService.getProductsByIdRouter(id)
    }

src/products/products.service.ts

getProductsByIdRouter(id:number){
        let resJson:any = {}
        switch (id) {
            case 1:
                resJson = {id:1, name: 'huawei', type: 'shouji'}
            break;
            case 2:
                resJson = {id:2, name: 'changcheng', type: 'qiche'}
            break;
            case 3:
                resJson = {id:3, name: 'biyadi', type: 'qiche'}
            break;
        }
        return resJson;
    }

RESTClient/demo.http

http://localhost:3000/api/products/getProductsByIdRouter/1 HTTP/1.1

7.3、Get请求-@Param()装饰器-动态参数id,name

src/products/products.controller.ts

// Get请求-@Param()装饰器-动态参数id,name
    @Get('/getProductsByIdRouter/:id/:name')
    getProductsByIdRouter2(@Param() Params):any{
        console.log()
        let id:number = parseInt(Params.id)
        let name:string = Params.name
        return this.productsService.getProductsByIdRouter2(id, name)
    }

src/products/products.service.ts

getProductsByIdRouter2(id:number, name:string = "huawei"){
        let resJson:any = {}
        switch (id) {
            case 1:
                resJson = {id:1, name: name, type: 'shouji'}
            break;
            case 2:
                resJson = {id:2, name: name, type: 'qiche'}
            break;
            case 3:
                resJson = {id:3, name: name, type: 'qiche'}
            break;
        }
        return resJson;
    }

RESTClient/demo.http

http://localhost:3000/api/products/getProductsByIdRouter/1/huawei-mate-60 HTTP/1.1

八、Controller控制器 Post 请求

8.1、post请求

src/products/products.controller.ts

@Post('/addProducts')
addProducts(): any{
    return this.productsService.addProducts()
}

src/products/products.service.ts

addProducts(){
        return {
            code: 200,
            data: ['huawei', 'changcheng', 'biyadi'],
            msg: '增加产品成功'
        }
    }

8.2、post请求 -- 带参数

src/products/products.controller.ts

// @Query()装饰器
    getProductsById(@Query() query):any{
        let id:number = parseInt(query.id)
        return this.productsService.getProductsById(id)
    }

src/products/products.service.ts

addProducts2(id: any){
        console.log(id)
        let resJson:any = {
            code: 200,
            data: ['huawei', 'changcheng', 'biyadi'],
            msg: '增加产品成功'
        }
        switch (id) {
            case 1:
                resJson.data = ['huawei']
            break;
            case 2:
                resJson.data = ['changcheng']
            break;
            case 3:
                resJson.data = ['biyadi']
            break;
        }
        return resJson
    }

RESTClient/demo.http

POST http://localhost:3000/api/products/addProducts2
Content-Type: application/json
{
    "id": 1
}

九、TypeORM 连接mysql数据库,增删改查

NestJS:TypeORM 连接mysql数据库,增删改查_snow@li的博客-CSDN博客

十、其他内容待更新

 

过程记录:

记录一、nestjs热更新

nestjs自带nodemon可以热更新,启动方式npm run start:dev(package.json里)

记录二、使用VsCode插件 REST Client

项目根目录创建RESTClient目录,demo.http文件

POST 接口地址 HTTP/1.1   点击Send Request   请求结果如右图

记录三、

Content-Type 和 json字符串中间必须有一个空行 url和conten-type之间不能有空行

增加空行后即可

相关内容:

express、koa、egg、Fastify

相关文章
|
11月前
|
开发框架 JavaScript 前端开发
NestJS:基础掌握 从了解到使用(上)
NestJS:基础掌握 从了解到使用(上)
129 0
|
前端开发
小满nestjs(第十章 nestjs 提供者)
如果服务 之间有相互的依赖 或者逻辑处理 可以使用 useFactory
129 0
小满nestjs(第十章 nestjs 提供者)
|
8月前
|
开发框架 JavaScript 前端开发
nestjs的学习(一)
nestjs的学习(一)
45 0
|
10月前
|
JavaScript 前端开发
[Nestjs] 使用ncc加快启动速度
通过使用 ncc 可以将 NestJS 应用程序打包成一个单独的可执行文件,这可以加快应用程序的启动速度。下面是使用 ncc 加快 NestJS 应用程序启动速度的步骤:
187 0
|
10月前
|
资源调度 API
[Nestjs] 集成 Swagger
安装 Swagger 模块:首先,使用 npm 或者 yarn 安装 @nestjs/swagger 模块。
|
10月前
|
jenkins 测试技术 持续交付
Nestjs如何使用Jest测试代码
使用Jest测试代码的好处有很多 1. 简单易用:Jest提供了简洁的API和友好的命令行界面,使得编写和运行测试代码变得非常容易。它的断言语法清晰明了,减少了编写测试用例的工作量。 2. 自动化和集成:Jest能够自动运行你的测试用例,并提供了丰富的报告和统计信息。它还可以与持续集成工具(如Jenkins、Travis CI等)集成,使得测试过程更加自动化和可靠。 3. 快速和高效:Jest采用了并行执行测试用例的策略,可以更快地执行大量的测试代码。此外,Jest还具有智能的文件监视功能,只运行受影响的测试用例,从而提高了开发效率。
123 0
|
开发框架 JavaScript 前端开发
NestJS系列(1):初识 NestJS 和 Hello,world
本文介绍了使用 @nest/cli 脚手架快速创建和启动一个 Nest 应用,随后又对“Hello, World”示例代码做了分析,简单介绍了一些 TypeSscript 语法,比如装饰器,和一些 Nest 的概念。相信看到这里,大家基本上了解了 Nest 应用接收到用户请求后,走了哪些流程,完成了响应。
34146 1
|
JavaScript
小满nestjs(第五章 nestjs cli)
通过 NestFactory.create(AppModule) 创建一个app 就是类似于绑定一个根组件App.vue
138 0
小满nestjs(第五章 nestjs cli)
小满nestjs(第十一章 nestjs 模块)
每个 Nest 应用程序至少有一个模块,即根模块。根模块是 Nest 开始安排应用程序树的地方。事实上,根模块可能是应用程序中唯一的模块,特别是当应用程序很小时,但是对于大型程序来说这是没有意义的。在大多数情况下,您将拥有多个模块,每个模块都有一组紧密相关的功能
95 0
小满nestjs(第十一章 nestjs 模块)
|
中间件
小满nestjs(第十二章 nestjs 中间件)
中间件是在路由处理程序 之前 调用的函数。 中间件函数可以访问请求和响应对象
183 0
小满nestjs(第十二章 nestjs 中间件)

热门文章

最新文章