nest框架基本认识(一)

我们常用的node的框架有expresskoaFastifymicrokeystonenest等,一般市场上比较流行的是expresskoa,如果你熟悉angular2+及喜欢用typescript或者你是做java开发的,我推荐用nest,本人也是更喜欢typescript的语法,尝试用这个框架开发东西,不过在日常项目中还是用的koa,官网地址

一、项目的基本创建(个人建议直接克隆官网的,俗称种子文件)

  • 1、步骤

    git clone https://github.com/nestjs/typescript-starter.git project
    cd project
    npm install
    npm run start:watch
  • 2、具体目录结构

    
    project
      |-src
        |-app.controller.ts
        |-app.module.ts
        |-main.ts
      |-index.js
      |-nodemon.json
      |-package.json
      |-README.md
      |-tsconfig.json
      |-tslint.json
    
  • 3、src文件夹下几个重要文件介绍
    • main.ts是主入口文件
    • app.module.ts是总的module文件
    • app.controller.ts是官方提供输出一个hello word文件

二、简单的使用

  • 1、直接在app.controller.ts里面

    import { Get, Controller, Post, Response, Param, HttpStatus, Request } from '@nestjs/common';
    
    @Controller()
    export class AppController {
        @Get()
        root(): string {
        return 'Hello World!';
      }
      @Get('/user/:id')
      user(@Response() res, @Param('id') id) {
        console.log(id)
        res.status(HttpStatus.OK).json({
          name: 'hello',
          age: 20
        });
      }
    }

三、关于客户端传递参数到服务器端的几种方式

  • 1、get的情况下一

    import { Controller, Get, Response, HttpStatus, Param } from '@nestjs/common'
    import { UsersService } from './users.service';
    
    @Controller('users')
    export class UsersController {
    
      @Get('/:id')
      getUser( @Response() res, @Param('id') id) {
        console.log(id);
        ...
      }
    
    }
    **访问方式**
    //http://localhost:4000/users/2
  • 2、get的情况下二

    import { Controller, Get, Response, Request } from '@nestjs/common'
    
    @Controller('users')
    export class UsersController {
    
      @Get('/')
      getUser( @Response() res, @Request() req) {
        console.log(req.query)
        ...
      }
    }
    **访问方式**
    //http://localhost:4000/users?age=10&name=hello
  • 3、使用post获取数据

    import { Controller, Post, Response, Request } from '@nestjs/common'
    
    @Controller('users')
    export class UsersController {
    
      @Post()
      addUser( @Response() res, @Request() req) {
        console.log(req.body, '///')
        ....
      }
    }
  • 4、使用post获取数据

    import { Controller, Post, Response, HttpStatus, Body } from '@nestjs/common'
    import { UsersService } from './users.service';
    
    @Controller('users')
    export class UsersController {
      @Post('/add')
      addUser1(@Response() res, @Body() user) {
        console.log(user);
        res.status(HttpStatus.CREATED).json({})
      }
    }

四、项目开发中使用组件化(app方式构建项目[django中叫app])

  • 1、新增一个用户users的目录
  • 2、在文件夹中创建三个(最基本的文件)

    • users.module.ts
    • users.controller.ts
    • users.service.ts
  • 3、将users.controller.tsusers.service.ts注册到users.module.ts

  • 4、组件的module注入到app.module.ts里面
  • 5、具体代码请查看users组件或者food组件

五、代码见

猜你喜欢

转载自blog.csdn.net/kuangshp128/article/details/79275410
今日推荐