Ich versuche, Daten von Remote-Backend-API zu erhalten. Als ich den Dokumenten folgte, (https://guides.emberjs.com/v2.2.0/models/customizing-adapters/), "ist der JSONAPIAdapter intelligent genug, um die URLs zu bestimmen, mit denen er basierend auf dem Namen des Modells kommuniziert." Also habe ich die Route, das Model und den Adapter generiert.Ember.js: Daten von Back-End mit JSONAPIAdapter erhalten - funktioniert nicht
Hier ist der Code des Adapter:
//app/adapters/app.js
import Ember from 'ember';
import JSONAPIAdapter from 'ember-data/adapters/json-api';
import JSONAPISerializer from 'ember-data/serializers/json-api';
export default JSONAPIAdapter.extend({
ajax: Ember.inject.service(),
host: 'http://api.themoviedb.org/3/discover/movie',
headers: {
'API_KEY': '72b56103e43843412a992a8d64bf96e9'
},
pathForType: function(type) {
return Ember.String.underscore(type);
},
serializer: JSONAPISerializer.extend({
primaryKey: 'id',
serializeId: function(id) {
return id.toString();
}
})
});
Der Code des Modells
//app/models/movie.js
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
// import { belongsTo, hasMany } from 'ember-data/relationships';
export default Model.extend({
\t poster_path: attr('string'),
\t adult: attr('boolean'),
\t overview: attr('string'),
\t release_date: attr('string'),
\t genre_ids: attr('array'),
\t original_title: attr('string'),
\t original_language: attr('string'),
\t title: attr('string'),
\t backdrop_path: attr('string'),
\t popularity: attr('number'),
\t vote_count: attr('number'),
\t video: attr('boolean'),
\t vote_average: attr('number')
});
Der Router der App:
//app/router.js
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: config.locationType
});
Router.map(function() {
this.route('movies', {
path: '/'
});
});
export default Router;
Und der Code der Route:
//app/routes/movies.js
import Ember from 'ember';
import Movie from 'search-movies/models/movie';
export default Ember.Route.extend({
\t model() {
\t \t return this.store.findAll('movie');
\t }
});
Aber wenn ich die app laufen lasse, erhalte ich die Fehler von 404:
Error while processing route: movies Ember Data Request GET /movies returned a 404
Ich denke, der Ladenservice e kann die Modelle nicht bekommen. Aber warum? Ich habe den Adapter generiert. Muss ich es irgendwo importieren? Oder was? Warum funktioniert diese Struktur nicht? Brauche Hilfe.
Was ist die URL Ember versucht zu treffen und welche URL ist Ihr API-Endpunkt für Filme auf gehostet? –
Ohne die URL zu sehen, die ember-data anfordert, würde ich vermuten, dass Ihr Host im Adapter falsch ist. Es sollte 'http: // api.themoviedb.org' sein. Glimmdaten sollten den Pfad erzeugen. Werfen Sie einen Blick auf Ihren Netzwerk-Tab, um zu sehen, was gerade passiert. – TuK
Keiner dieser Code-Snippets kann ausgeführt werden, so dass der Post weniger lesbar ist. Ihre Einrückung war ein wenig schwer zu lesen. Wenn Sie sicherstellen können, dass es lesbar ist, werden Sie weniger Leute abprallen lassen. – sheriffderek