首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在回送4中设置不同的Http状态

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

Stack Overflow用户
提问于 2019-02-12 17:08:05
回答 1查看 3.3K关注 0票数 8

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

例如:

201“创建”在post方法上

删除方法中的204“无内容”

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

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-15 13:41:14

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

对于这个特性我们还没有一流的支持。当前的解决方法是将响应对象注入控制器方法,并通过Express/Node.js核心API直接设置状态代码。

代码语言:javascript
复制
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);
    // ...
  }
}

不要忘记从ResponseRestBindings导入@loopback/rest,从@loopback/core导入inject。在控制器中添加以下导入。

代码语言:javascript
复制
import { Response, RestBindings } from '@loopback/rest';
import { inject } from '@loopback/core';

201“创建”在post方法上

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

删除方法中的204“无内容”

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

代码语言:javascript
复制
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);
  }
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54655257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档