Loopback 4 REST Controller возвращает путь NotFoundError 404 - PullRequest
0 голосов
/ 07 июня 2019

Создание контроллера REST с объектом функций CRUD через CLI с использованием lb4 controller media, указывающим на существующий MediaRepository для существующей модели Entity Media, обе из которых были сгенерированы также с использованием CLI lb4.

Класс MediaControllerбыл создан со всеми маршрутами REST для / media *

Маршрут / ping работает нормально, поэтому я искал какую-либо специальную конфигурацию маршрутизации для него, чтобы посмотреть, не может ли быть конфигурация с ошибками для / media, но ничего не было очевидно,

HTTP-запрос Get к / media-ответу с веб-страницей следующего содержания:

  <h1>NotFoundError</h1>
  <h2><em>404</em> Endpoint &#34;GET /media&#34; not found.</h2>

Возможно, существует какая-то фундаментальная конфигурация или настройка, которая должна произойти, но я просто не вижуit.

Класс MediaController

import {
  Count,
  CountSchema,
  Filter,
  repository,
  Where,
} from '@loopback/repository';
import {
  post,
  param,
  get,
  getFilterSchemaFor,
  getWhereSchemaFor,
  patch,
  put,
  del,
  requestBody, Request, RestBindings, ResponseObject
} from '@loopback/rest';
import { Media } from '../models';
import { MediaRepository } from '../repositories';

export class MediaController {
  constructor(
    @repository(MediaRepository)
    public mediaRepository: MediaRepository,
  ) { }

  @post('/media', {
    responses: {
      '200': {
        description: 'Media model instance',
        content: { 'application/json': { schema: { 'x-ts-type': Media } } },
      },
    },
  })
  async create(@requestBody() media: Media): Promise<Media> {
    return await this.mediaRepository.create(media);
  }

  @get('/media/count', {
    responses: {
      '200': {
        description: 'Media model count',
        content: { 'application/json': { schema: CountSchema } },
      },
    },
  })
  async count(
    @param.query.object('where', getWhereSchemaFor(Media)) where?: Where<Media>,
  ): Promise<Count> {
    return await this.mediaRepository.count();
  }

  @get('/media', {
    responses: {
      '200': {
        description: 'Array of Media model instances',
        content: {
          'application/json': {
            schema: { type: 'array', items: { 'x-ts-type': Media } },
          },
        },
      },
    },
  })
  async find(
    @param.query.object('filter', getFilterSchemaFor(Media)) filter?: Filter<Media>,
  ): Promise<Media[]> {
    return await this.mediaRepository.find(filter);
  }

  @patch('/media', {
    responses: {
      '200': {
        description: 'Media PATCH success count',
        content: { 'application/json': { schema: CountSchema } },
      },
    },
  })
  async updateAll(
    @requestBody() media: Media,
    @param.query.object('where', getWhereSchemaFor(Media)) where?: Where<Media>,
  ): Promise<Count> {
    return await this.mediaRepository.updateAll(media, where);
  }

  @get('/media/{id}', {
    responses: {
      '200': {
        description: 'Media model instance',
        content: { 'application/json': { schema: { 'x-ts-type': Media } } },
      },
    },
  })
  async findById(@param.path.string('id') id: string): Promise<Media> {
    return await this.mediaRepository.findById(id);
  }

  @patch('/media/{id}', {
    responses: {
      '204': {
        description: 'Media PATCH success',
      },
    },
  })
  async updateById(
    @param.path.string('id') id: string,
    @requestBody() media: Media,
  ): Promise<void> {
    await this.mediaRepository.updateById(id, media);
  }

  @put('/media/{id}', {
    responses: {
      '204': {
        description: 'Media PUT success',
      },
    },
  })
  async replaceById(
    @param.path.string('id') id: string,
    @requestBody() media: Media,
  ): Promise<void> {
    await this.mediaRepository.replaceById(id, media);
  }

  @del('/media/{id}', {
    responses: {
      '204': {
        description: 'Media DELETE success',
      },
    },
  })
  async deleteById(@param.path.string('id') id: string): Promise<void> {
    await this.mediaRepository.deleteById(id);
  }
}

1 Ответ

0 голосов
/ 20 июня 2019

Итак, я отложил на некоторое время lb4, пока оценивал другие фреймворки.

Сегодня вернулся на мой демонстрационный проект lb4. С тех пор никаких изменений не произошло. Запустил приложение.

npm run start

Просмотр localhost: 3000 / media

К моему удивлению, это вернуло ответ json. Теперь мой массив ответов был пуст, и он должен был что-то вернуть, поскольку в источнике данных mongodb были документы, но это отдельная проблема, которую нужно выяснить.

...