簡體   English   中英

本地主機REST API請求錯誤ionic2 angular2

[英]localhost REST API request error ionic2 angular2

我正在Ionic 2應用程序中向本地托管的REST API服務器發出獲取/發布請求。 下面的錯誤顯示了幾秒鍾。

3387557組例外:狀態為0的URL響應:空

4 387558錯誤例外:狀態為0的URL響應:空

5387558組結束

6 387568錯誤未捕獲的響應,狀態為0,URL:null, http:// localhost:8100 / build / js / app.bundle.js ,行:88826

我能夠向本地服務器發出成功的curl請求。 這是我的代碼供參考。

app.js

var express = require("express");
var mysql   = require("mysql");
var bodyParser  = require("body-parser");
var SHA256 = require("sha256");
var rest = require("./REST.js");
var app  = express();

function REST(){
  var self = this;
  self.connectMysql();
};

REST.prototype.connectMysql = function() {
  var self = this;
  var pool      =    mysql.createPool({
    connectionLimit : 100,
    host     : 'host',
    user     : 'user',
    password : 'password',
    database : 'database',
    debug    : false
  });
  pool.getConnection(function(err,connection){
    if(err) {
      self.stop(err);
    } else {
      self.configureExpress(connection);
    }
  });
}

REST.prototype.configureExpress = function(connection) {
  var self = this;
  app.use(bodyParser.urlencoded({ extended: true }));
  app.use(bodyParser.json());
  var router = express.Router();
  app.use('/api', router);
  var rest_router = new rest(router,connection,SHA256);
  self.startServer();
}

REST.prototype.startServer = function() {
  app.listen(3000, function() {
    console.log("All right ! I am alive at Port 3000. OKAY BUDDY");
  });
}

REST.prototype.stop = function(err) {
  console.log("ISSUE WITH MYSQL n" + err);
  process.exit(1);
}

new REST();

REST.js

var mysql = require("mysql");

function REST_ROUTER(router, connection, SHA256) {
  var self = this;
  self.handleRoutes(router, connection, SHA256);
}

REST_ROUTER.prototype.handleRoutes= function(router,connection,SHA256) {
  router.get("/",function(req,res){
    res.json({'foo': 'bar'});
  });
});

login.js(組件)

import {Component} from '@angular/core';
import {NavController} from 'ionic-angular';
import {AuthProvider} from '../../providers/auth/auth';

/*
  Generated class for the LoginPage page.

  See http://ionicframework.com/docs/v2/components/#navigation for more info on
  Ionic pages and navigation.
*/
@Component({
  templateUrl: 'build/pages/login/login.html',
  providers: [AuthProvider]
})
export class LoginPage {
  static get parameters() {
    return [[NavController], [AuthProvider]];
  }

  constructor(nav, AuthProvider) {
    this.nav = nav;
    this.authProvider = AuthProvider;
    this.form = {};
  }

  login(form) {
    this.authProvider.login(form).then(res => {
      alert(JSON.stringify(res));
    });
  }
}

auth.js(提供者)

import {Injectable} from '@angular/core';
import {Http, Headers, RequestOptions} from '@angular/http';
import 'rxjs/add/operator/map';

/*
  Generated class for the Auth provider.

  See https://angular.io/docs/ts/latest/guide/dependency-injection.html
  for more info on providers and Angular 2 DI.
*/
@Injectable()
export class AuthProvider {
  static get parameters(){
    return [[Http]]
  }

  constructor(http) {
    this.url = 'http://localhost:3000/api';
    this.http = http;
  }

  login(form) {
    return new Promise(resolve => {
      this.http.get(this.getUrl)
        .map(res => res.json())
        .subscribe(data => {
          resolve(data);
        });
    });
  }
}

我有同樣的問題,並且能夠解決。 我在localhost:8000上提供了我的API。 當ionic向localhost或127.0.0.1發出請求時,我認為它已被阻止。 相反,我找到了計算機的IP地址,並將Web服務器托管在0.0.0.0:8000上,而不是訪問http:// localhost:8000 / api / my / endpoint ,而訪問了http:// mycomputerip:8000 / api / my / endpoint ,而且有效!

您正試圖在auth.js login函數中請求輸入錯誤的空URL:

this.http.get(this.getUrl)

您的代碼示例中未定義this.getUrl。 輕松解決:

this.http.get(this.url)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM