Restful风格接口开发

一、项目搭建

安装nestjs脚手架

//    安装nestjs脚手架
npm i @nestjs/cli

//    新建
nest new [名字]

//选择要用的工具
npm / yarn / pnpm

文件信息:

【main.ts】:

        入口文件,通过NestFactory(由nestjs/core库抛出的对象),该对象中有create方法包裹module 。

【app.module.ts】:

        可以成为根模块

【其他文件可以删除】

import { Module } from '@nestjs/common';


@Module({
  imports: [ 放入要注册的子模块 ],
  controllers: [],
  providers: [],
})
export class AppModule {}


注册子模块的方法:
    使用终端,使用 nest generate module [命名],即可生成子模块。
    在app.module.ts中注入新声明的子模块

    添加controller:
        命令:nest generate controller [命名]
    添加service:
        命令:nest generate service [命名]


controller层:    处理请求与响应
service层:       

在controllers、providers中声明模块叫做 Dependency Injection (依赖注入)

// 新建ProductOrder模块,使用该命令会生成一个子模块的目录,该目录下包含一个子模块的Module文件,使用该模块,需要在app.module.ts文件中进行注入,命令如下:

nest generate module ProductOrder

// 新建controller

nest generate controller ProductOrder

// 新建service

nest generate service ProductOrder

二、代码内容 

// controller层只做响应,


@Injectable()
export class ProductOrderService {}
// 加上Injectable注解,证明,该变量是可以被注入的
import { Module } from '@nestjs/common';
import { ProductOrderController } from './product-order.controller';
import { ProductOrderService } from './product-order.service';
import { ProductOrderRepository } from './product-order.repository';

@Module({
  controllers: [ProductOrderController],
  providers: [
    ProductOrderService,
    ProductOrderRepository,
  ],
})
export class ProductOrderModule {}


/*

    模块需要在providers中进行注入,然后使用

*/
// 在product-order.service.ts中写入内容

import { Injectable } from '@nestjs/common';
import { ProductOrderRepository } from './product-order.repository';

@Injectable()
export class ProductOrderService {
    constructor( private readonly productOrderRepository: ProductOrderRepository ){}
}
// 在product-order.repository.ts中写入内容

import { Injectable } from '@nestjs/common';

// 自己写构造方法
@Injectable()
export class ProductOrderRepository {}
// product-order.controller.ts中的内容

import { Controller, Post } from '@nestjs/common';
import { ProductOrderService } from './product-order.service';

// 可是视为描述器,注解,通过注解,说明这是一个nest的控制器,访问某个路由的时候,会进入这个控制器,访问到某个方法。
// 控制器的作用就是处理HTTP请求,并返回HTTP响应。product-order是路由的前缀,后面跟着的createOrder是具体的路由。
@Controller('product-order')
export class ProductOrderController {
    // 构造器,使用依赖注入的DI模式,将ProductOrderService注入到ProductOrderController中
    constructor( private readonly productOrderService: ProductOrderService ) {}
    // 在这里指定请求,是post请求,还是get请求,请求后加的是路由的路径。
    @Post('/createOrder')
    public createOrder(){
        return "这是product-order.comtroller.ts中的内容!"
    }
}

使用Apifox进行测试

// main.ts 中的内容

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

/**
 * 
 * NestFactory.create(AppModule) 用于创建 Nest 应用实例,并传入 AppModule 作为启动模块。
 * 本地监听端口:3000
 * 
 */

根据【product-order.controller.ts】中设置的路由,方法为POST,配置Apifox中的接口,路径为

http://localhost:3000/product-order/createOrder

具体效果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值