如何在环回4中设置不同的Http状态

问题描述 投票:4回答:1

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

例如 :

201“创建”在post方法上

删除方法204“无内容”

我试图在@api装饰器中指定这个,但是这个改变没有反映在实际的响应中。

谢谢你的帮助 !

node.js loopbackjs
1个回答
6
投票

我找不到任何有关如何使用loopback 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);
  }
© www.soinside.com 2019 - 2024. All rights reserved.