首页 > 解决方案 > 如何在环回 4 中设置不同的 Http 状态

问题描述

我找不到任何有关如何使用环回 4 更改成功 HTTP 代码的资源。

例如 :

201 在 post 方法上“创建”

204“无内容”删除方法

我试图在 @api 装饰器中指定这一点,但此更改并未反映在实际响应中。

谢谢你的帮助 !

标签: node.jsloopbackjs

解决方案


我找不到任何有关如何使用环回 4 更改成功 HTTP 代码的资源。

我们还没有对该功能的一流支持。当前的解决方法是将 Response 对象注入到您的控制器方法中,并直接通过 Express/Node.js 核心 API 设置状态代码。

export class TodoController {
  constructor(
    @repository(TodoRepository) protected todoRepo: TodoRepository,
    @inject(RestBindings.Http.RESPONSE) protected response: Response,
  ) {}

  async createTodo(@requestBody() todo: Todo): Promise<Todo> {
    this.response.status(401);
    // ...
  }
}

不要忘记Response@loopback/rest. 在您的控制器中添加以下导入。

import { Response } from '@loopback/rest';

201 在 post 方法上“创建”

请参阅https://github.com/strongloop/loopback-next/issues/788中的讨论。Location困难的部分是如何确定在响应头中发送什么 URL 。

204“无内容”删除方法

只需更改您的控制器方法以返回undefined而不是当前{count: 1}对象。lb4我相信这是我们的工具搭建的 CRUD 控制器的默认行为。

export class TodoController {
  // ...
  @del('/todos/{id}', {
    responses: {
      '204': {
        description: 'Todo DELETE success',
      },
    },
  })
  async deleteTodo(@param.path.number('id') id: number): Promise<void> {
    await this.todoRepo.deleteById(id);
  }

推荐阅读