nestjs post请求
时间: 2025-01-01 07:25:39 浏览: 6
### 如何在 NestJS 中处理 POST 请求
#### 创建服务层逻辑
为了保持良好的架构设计,通常会把业务逻辑放在服务层。通过添加 `@Injectable()` 装饰器来定义一个可注入的服务类[^1]。
例如创建书籍管理功能时,在 `/src/books/books.service.ts` 文件内定义如下代码:
```typescript
import { Injectable, HttpException } from '@nestjs/common';
import { BOOKS } from '../mocks/books.mock';
@Injectable()
export class BooksService {
private books = BOOKS;
async addBook(book): Promise<any> {
try {
this.books.push(book);
return await Promise.resolve(this.books);
} catch (error) {
throw new HttpException('Failed to add book', 500);
}
}
}
```
此段代码实现了向图书列表中增加新书的功能,并返回更新后的整个列表[^5]。
#### 控制器接收并转发请求
控制器主要职责在于接受来自前端的HTTP请求并向外发送响应数据。对于POST请求而言,控制器需解析传入的数据体并通过依赖注入机制调用对应的服务实例完成具体操作[^3]。
下面是在 `/src/books/books.controller.ts` 定义用于处理新增书籍POST请求的方法示例:
```typescript
import { Controller, Post, Body } from '@nestjs/common';
import { BooksService } from './books.service';
@Controller('books')
export class BooksController {
constructor(private readonly booksService: BooksService) {}
@Post('/add')
create(@Body() bookData) {
return this.booksService.addBook(bookData);
}
}
```
这里使用了装饰器 `@Post('/add')` 来指定路由路径以及允许的HTTP方法;而参数修饰符 `@Body()` 则用来获取请求主体内的JSON对象作为输入传递给服务层函数[^4]。
阅读全文