我正在MEAN JS上开发一个应用程序。我是MEAN JS的新手。
我想访问外部API以获得json respone如下 -
{"id":"7gd6ud7ud5r0c","name":"jack","zip":"94109","gender":"Male"}
我有这个参考here (https://nodejs.org/api/https.html) ..
但我不知道如何在客户端控制器中使用http / https请求。
这是我的 express.js
'use strict';
/**
* Module dependencies.
*/
var fs = require('fs'),
http = require('http'), // required already
https = require('https'), // required already
express = require('express'),
morgan = require('morgan'),
bodyParser = require('body-parser'),
.....
.....
.....
这是我的 invite.client.controller.js
'use strict';
angular.module('core').controller('InviteController', ['$scope',
'Authentication', '$http',
function($scope, Authentication, $http) {
// This provides Authentication context.
$scope.authentication = Authentication;
$scope.getMembersFromAPI = function(){
***************************************
// this block shows error ReferenceError: require is not defined
var http = require('http'),
https = require('https');
***************************************
var options = {
hostname: 'https://api.somedemodp.com/v5/td?api_key=ec96c9afcbb6bbb8f5a687bd7&email=vlad@rapleafdemo.com',
path: '/',
method: 'GET'
};
var req = https.request(options, function(res) {
console.log('statusCode: ', res.statusCode);
console.log('headers: ', res.headers);
res.on('data', function(d) {
process.stdout.write(d);
});
});
req.end();
req.on('error', function(e) {
console.error(e);
});
};
}
]);
答案 0 :(得分:2)
...你是否混淆了你的角度和快速代码?你没有角度使用require。你使用依赖注入。
Angular是前端,express是后端。它们是分离的。
angular.module('core').controller('InviteController', ['$scope',
'Authentication', '$http',
function($scope, Authentication, $http)
这是你进行依赖注入的地方(类似于node / express中的require)你已经注入了$ http。
您实际上可以直接使用$ http调用从角度内调用外部API - 来自docs:
// Simple GET request example :
$http.get('/someUrl').
success(function(data, status, headers, config) {
// this callback will be called asynchronously
// when the response is available
}).
error(function(data, status, headers, config) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
答案 1 :(得分:0)
对于遇到此问题的人。我建议您阅读此博客:calling third party web api's from the mean stack
您遇到的问题是浏览器阻止跨域调用。要做的就是从服务器联系API并将其发送到前端。
注意:我自己没有尝试过,但是,通过在接收端启用CORS +发送正确的标头可以让您从前端进行跨域调用。