Я не могу найти никаких источников о том, как изменить успешный HTTP-код с помощью обратной петли 4.
У нас пока нет первоклассной поддержки этой функции.Текущее решение состоит в том, чтобы внедрить объект Response в метод вашего контроллера и установить код состояния напрямую через основной API Express / Node.js.
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 «создано» для метода записи
См. Обсуждение в https://github.com/strongloop/loopback-next/issues/788. Сложная частькак выяснить, какой URL отправлять в заголовке ответа Location
.
204 "нет содержимого" при методе удаления
Просто измените метод контроллера для возврата undefined
вместо текущего {count: 1}
объекта.Я полагаю, что это стандартное поведение для контроллеров CRUD, созданных с помощью нашего инструмента lb4
.
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);
}