gpt4 book ai didi

node.js - 如何在 loopback 4 中设置不同的 Http Status

转载 作者:搜寻专家 更新时间:2023-10-31 22:40:27 29 4
gpt4 key购买 nike

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

例如:

201 在 post 方法上“创建”

204 "no content"on delete 方法

我试图在@api 装饰器中指定它,但这种更改并未反射(reflect)在实际响应中。

谢谢你的帮助!

最佳答案

I can't find any ressources on how to change the success HTTP code using loopback 4.

我们还没有对此功能提供一流的支持。当前的解决方法是将 Response 对象注入(inject)到您的 Controller 方法中,并直接通过 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);
// ...
}
}

不要忘记导入 ResponseRestBindings来自 @loopback/rest , 和 inject来自 @loopback/core .在您的 Controller 中添加以下导入。

import { Response, RestBindings } from '@loopback/rest';
import { inject } from '@loopback/core';

201 "created" on post method

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

204 "no content" on delete method

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

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);
}

关于node.js - 如何在 loopback 4 中设置不同的 Http Status,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54655257/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com