【问题标题】:404 not found with api call - Angular to RoRapi 调用找不到 404 - Angular 到 RoR
【发布时间】:2014-03-27 00:09:02
【问题描述】:

我是 Ruby on Rails 的新手,我正在尝试以一种非常简单的方式将 Angular 连接到 RoR

这是我的服务

mWebApp.service('mWebSrvc', function($http, $log) {
this.getCustomers = function() {
    $http({
        method : 'GET',
        url : 'http://127.0.0.1:3000/api/customers/'
    }).success(function(data, status, headers, config) {
        $log.log('Done');
        angular.forEach(data, function(c) {
            $log.log(c.Title);
        });
        customers = data;
        return customers;
    });     
};
});

当我在 Firebug 的 Net 选项卡下查看时,我看到 OPTIONS /api/customers/ 404 Not Found,但如果我单击其中的 Response 选项卡,我会看到 JSON 文件 - WTF?而不是 JSON 选项卡 - 再次,WTF?

在 Firebug 的控制台下 -

"NetworkError: 404 Not Found  - http://numberForLocalHost:3000/api/customers/"

我的 Rails 服务器在守护程序模式下运行 - numberForLocalHost:3000 - 这可能是什么问题?它应该调用一个真正的api

如果我将上面的 URL 粘贴到任何网络浏览器中,那么我可以看到 JSON

像往常一样,提前谢谢

【问题讨论】:

    标签: ruby-on-rails json angularjs


    【解决方案1】:

    您收到OPTIONS 请求是因为您的浏览器认为这是一个跨源请求。

    例如见this question。您的 RoR 应用程序是否也为您的客户端提供服务?如果不是,您应该决定是否可以(没有理由不这样做),或者您需要从您看到的服务器回复pre-flight OPTIONS request

    【讨论】:

    • 当我尝试通过 localhost:3000 调出我的 index.html 文件(Angular)时,它会自动转到没有 Angular 的 RoR index.html.erb 文件。我的 index.html 位于目录的根目录中,并从 /angular/scripts/view/ 目录调用文件 - 它在 localhost:8888 上运行 我应该将 index.html 文件的内容放入 index.html.erb文件?
    【解决方案2】:

    我的 Rails + Angular 应用程序也遇到了同样的问题。我的cors 在我的rails 应用程序中设置得很好,但仍然没有,我仍然在角度应用程序中得到404 not found。这可能是原因: 也许您的package.json 中有"angular-in-memory-web-api": '0.x.x',并且还导入了app.module.ts,如InMemoryWebApiModuleInMemoryDataService。这些显然拦截了对 API 的所有调用,从而阻止它们到达您的后端服务器。当我删除了这些依赖项及其声明后,我的应用突然开始正常工作了!

    查看this answer 了解更多信息。

    【讨论】:

    • 感谢@Denn 的回复。五年多前我发布了这个问题,之后就离开了 RoR。抱歉,我不记得解决方案了,但感谢您提供的信息
    猜你喜欢
    • 1970-01-01
    • 2018-10-29
    • 2017-10-22
    • 1970-01-01
    • 2013-08-16
    • 2021-10-15
    • 2014-09-09
    • 2019-01-20
    • 2018-03-02
    相关资源
    最近更新 更多