Ember 3.2.2 запрос маршрутизации на .NET Core 2.1 JSON веб-API

Я новичок в использовании Ember и слежу за онлайн-видеоуроком (см. Ниже ссылку на веб-сайт, хотя она датирована, поскольку использует .NET Core 1.0), которая демонстрирует, как настроить интерфейс JSON API с интерфейсом Ember - я используя код Visual Studio. Я успешно завершил первое видео и получил ответы от JSON API-сервера. Тем не менее, я не могу получить второе видео, работая, если Ember отправит запрос на api-back end для извлечения данных. Я знаю это, потому что я отслеживаю вызовы на сервер. Таким образом, хотя я могу попасть на серверный сервер и получить ответ JSON, ответ на внешнем интерфейсе - HTTP-ошибка 404 - страница не найдена, и на внутренний адрес нет запроса.

Ошибка HTTP:

Error: Ember Data Request GET /todo-items returned a 404
Payload (text/html; charset=utf-8)
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Error</title>
    </head>
    <body>
        <pre>Cannot GET /todo-items</pre>
    </body>
</html>

Мое лучшее предположение, что изменения были внесены в .NET Core и Ember в отношении маршрутизации, которые не охвачены в видео. К сожалению, ошибка 404 очень мало, и я не могу найти проблему. Кто-нибудь знает, где проблема или как я могу устранить эту проблему?

Видеоуроки: https://www.youtube.com/watch?v=_d53rG2i9pY&index=2&list=PLu4Bq53iqJJAo1RF0TY4Q5qCG7n9AqSZf

router.js

import EmberRouter from '@ember/routing/router';
import config from './config/environment';

const Router = EmberRouter.extend({
  location: config.locationType,
  rootURL: config.rootURL
});

Router.map(function() {
  this.route('todo-items');
});

export default Router;

environment.js

'use strict';

module.exports = function(environment) {
  let ENV = {
    modulePrefix: 'todo-list-client',
    environment,
    rootURL: '/',
    locationType: 'auto',
    EmberENV: {
      FEATURES: {
        // Here you can enable experimental features on an ember canary build
        // e.g. 'with-controller': true
      },
      EXTEND_PROTOTYPES: {
        // Prevent Ember Data from overriding Date.parse.
        Date: false
      }
    },

    APP: {
      host: 'http://localhost:5000',
      namespace: 'api/v1'
    }
  };

  if (environment === 'development') {
    // ENV.APP.LOG_RESOLVER = true;
    // ENV.APP.LOG_ACTIVE_GENERATION = true;
    // ENV.APP.LOG_TRANSITIONS = true;
    // ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
    // ENV.APP.LOG_VIEW_LOOKUPS = true;
  }

  if (environment === 'test') {
    // Testem prefers this...
    ENV.locationType = 'none';

    // keep test console output quieter
    ENV.APP.LOG_ACTIVE_GENERATION = false;
    ENV.APP.LOG_VIEW_LOOKUPS = false;

    ENV.APP.rootElement = '#ember-testing';
    ENV.APP.autoboot = false;
  }

  if (environment === 'production') {
    // here you can enable a production-specific feature
  }

  return ENV;
};

application.js

import DS from 'ember-data';
import ENV from './config/environment';

export default DS.JSONAPIAdapter.extend({
    namespace: ENV.APP.namespace,
    host: ENV.APP.host
})

ToDo-items.js

import Route from '@ember/routing/route';

export default Route.extend({
    model(){
        return this.store.findAll('todo-item');
    }
});

Модельные файлы:

ToDo-item.js

import DS from 'ember-data';

const { attr, belongsTo} = DS;

export default DS.Model.extend({
    description: attr('string'),
    owner: belongsTo('person')
});

person.js

import DS from 'ember-data';

const { attr, hasMany} = DS;

export default DS.Model.extend({
    firstName: attr('string'),
    lastName: attr('string'),
    todoItems: hasMany('todo-item')
});

ОБНОВЛЕНИЕ 1:

Сервер API работает на порту 5000, а Ember - на 4200.

Обновление 2

Сообщения сервера:

javascript,ember.js,asp.net-core-2.0,asp.net-core-webapi,

-1

Ответов: 2


1

Вы запускаете службу ember с параметром proxy, указывающим на ваш сервер?

Попробуйте запустить это в своем терминале:

ember s -pr=http://localhost:5000

то ваши запросы должны идти в нужную конечную точку.


0 принят

Я нашел проблему. Мне нужно было настроить CORS.

JavaScript, ember.js, asp.net-ядро-2.0, asp.net-ядро-WebAPI,
Похожие вопросы