我有一个API(我在ASP.Net Web API中编写),它有一个返回状态的所有县的终点。
我的路线应如下所示:http://localhost:4200/counties/CA或http://localhost:4200/counties/NY
我的API工作正常。
但是,我得到了:Error while processing route: counties Ember Data Request GET http://localhost:50523/api/counties returned a 404
我的路由器映射是:
// router.js
Router.map(function() {
this.route('states');
this.route('counties', {path : 'counties/:state'});
});
我也试过'counties/:fips'
- fips是序列化程序中指定的primaryKey。对于它来说,'counties/:county_id'
和'counties/:state_id'
。
// routes/counties.js is:
export default Ember.Route.extend({
model(params) {
return this.store.query('county', {state: params.state});
}
});
// models/county.js:
export default DS.Model.extend({
state: DS.attr('string'),
countyName: DS.attr('string'),
fips: DS.attr('string'),
});
请注意,状态路由和API工作正常。
编辑:基于评论@LUX我意识到我需要在测试路线之前连接一些东西。所以我修改了状态模板,为每个列出的状态包含一个链接,如下所示:
// templates/companies
{{#each model as |state|}}
<p>{{#link-to "counties" state.state}}{{state.state}} - {{state.stateName}}/link-to}}</p>
{{/each}}
我还修复了我的模型钩子(见上文)
现在,当我将鼠标悬停在链接上时,我会在浏览器的状态栏中找到正确的URL,但我仍然得到完全相同的错误。我再次查看了所有代码,与我正在研究的其他两个示例项目相比,我只是没有看到问题。
编辑:
这是我的适配器:
// adapters/application.js
import WebApiAdapter from 'ember-web-api/adapters/web-api';
import config from '../config/environment';
export default WebApiAdapter.extend({
host: config.host,
namespace: 'api'
});
答案 0 :(得分:0)
为什么会这样?路由器用于ember路由,因此浏览器中的URL也是如此。不是您的API的网址。
动态细分将传递到您的model
挂钩:
model(params) {
console.log(params.state);
}
同样findAll
是获取给定类型的所有记录。所以你应该使用query
:
model(params) {
return this.store.query('county', { state: params.state });
}
现在您已在适配器中使用该状态,您可以提出正确的请求。