如何在 loopback 4 中设置不同的 Http Status
How to set a different Http Status in loopback 4
我找不到任何关于如何使用环回 4 更改成功 HTTP 代码的资源。
例如:
201 "created" post 方法
204 "no content" 关于删除方法
我试图在 @api 装饰器中指定它,但这个更改没有反映在实际响应中。
感谢您的帮助!
I can't find any ressources on how to change the success HTTP code using loopback 4.
我们还没有 first-class 支持此功能。当前的解决方法是将 Response object 注入到您的控制器方法中,并直接通过 Express/Node.js core 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);
// ...
}
}
不要忘记从 @loopback/rest
导入 Response
和 RestBindings
,从 @loopback/core
导入 inject
。在您的控制器中添加以下导入。
import { Response, RestBindings } from '@loopback/rest';
import { inject } from '@loopback/core';
201 "created" on post method
参见 https://github.com/strongloop/loopback-next/issues/788 中的讨论。困难的部分是如何弄清楚 URL 在 Location
响应 header.
中发送什么
204 "no content" on delete method
只需将您的控制器方法更改为 return undefined
而不是当前的 {count: 1}
object。我相信这是我们 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);
}
我找不到任何关于如何使用环回 4 更改成功 HTTP 代码的资源。
例如:
201 "created" post 方法
204 "no content" 关于删除方法
我试图在 @api 装饰器中指定它,但这个更改没有反映在实际响应中。
感谢您的帮助!
I can't find any ressources on how to change the success HTTP code using loopback 4.
我们还没有 first-class 支持此功能。当前的解决方法是将 Response object 注入到您的控制器方法中,并直接通过 Express/Node.js core 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);
// ...
}
}
不要忘记从 @loopback/rest
导入 Response
和 RestBindings
,从 @loopback/core
导入 inject
。在您的控制器中添加以下导入。
import { Response, RestBindings } from '@loopback/rest';
import { inject } from '@loopback/core';
201 "created" on post method
参见 https://github.com/strongloop/loopback-next/issues/788 中的讨论。困难的部分是如何弄清楚 URL 在 Location
响应 header.
204 "no content" on delete method
只需将您的控制器方法更改为 return undefined
而不是当前的 {count: 1}
object。我相信这是我们 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);
}