如何从具有基本身份验证的 rest api 获取数据?
Posted
技术标签:
【中文标题】如何从具有基本身份验证的 rest api 获取数据?【英文标题】:How to get data from rest api which has basic authentication? 【发布时间】:2017-11-23 16:45:05 【问题描述】:我正在尝试通过 HTTP get 方法从该网站获取数据。该网站具有基本身份验证。数据为 JSON 格式。 这是其余的 api 网站: (https://shoploapi.herokuapp.com/sellers)
// Code goes here
angular.module('myapp', ['myapp.controller']);
angular.module('myapp.controller', ['myapp.service'])
.controller('testController', function($scope, testService)
$scope.posts = ;
function GetAllPosts()
var getPostsData = testService.getPosts();
getPostsData.then(function(post)
$scope.posts = post.data;
, function()
alert('Error in getting post records');
);
GetAllPosts();
);
angular.module('myapp.service', [])
.service('testService', function($http)
//get All NewsLetter
this.getPosts = function()
return $http.get('https://shoploapi.herokuapp.com/sellers');
;
);
angular.module('myApp', ['base64'])
.config(function($httpProvider, $base64)
var auth = $base64.encode("bhupendra7:ice123age456");
$httpProvider.defaults.headers.common['Authorization'] = 'Basic ' + auth;
);
<!DOCTYPE html>
<html>
<head>
<script data-require="angular.js@1.5.0" data-semver="1.5.0" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-base64/2.0.5/angular-base64.js"></script>
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
</head>
<body ng-app="myapp">
<h1>Hello Plunker!</h1>
<div ng-controller="testController">
<div>
<ul>
<li ng-repeat="post in posts">
post.careof post.district post.gender post.name
</li>
</ul>
</div>
</div>
</body>
</html>
这是我的 Plunker 的链接:
(https://plnkr.co/edit/7pqljm?p=preview)
谁能帮忙?
【问题讨论】:
你在angular.module('myApp', ['base64'])
中有一个错字将myApp
改成myapp
.. 即使改正了,你也会面临另一个问题,testController 是undefined
。如果您需要更多帮助,请告诉我
【参考方案1】:
您的代码中有 2 个问题。
1.你有错别字
在angular.module('myApp', ['base64'])
中,将模块名称改为myapp
2。您将myapp.controller
注入到myapp
模块的方式
将其更改为angular.module('myapp', []);
您还需要重新排序您的代码。查看我为您创建的Plunker。
即使你解决了上述两个问题,你仍然会面临来自 Heroku 的CORS 问题。根据您的服务器端技术(NodeJS、Rails 等),您需要从服务器启用它才能与您的应用程序通信。也可以关注JSONP with AngularJS
希望对你有帮助
【讨论】:
谢谢您,先生。你能帮我么。我已经尝试了很长时间。我需要做什么才能获取数据? 您使用什么技术编写了您的服务器应用程序? 服务端应用写在nodejs上。数据库使用MongoDB,Web框架使用Expressjs。 查看此链接以使用 ExpressJS 配置 CORS:github.com/expressjs/cors 与 Heroku 和 NodeJS+Express 相关的更具体问题:***.com/questions/11001817/…以上是关于如何从具有基本身份验证的 rest api 获取数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Spring Security 做一个 RESTful 登录 API?
Spring boot 如何让 Thymeleaf 网页和 REST API 具有不同的身份验证方案
SPA 使用的经过身份验证的 Rest API:如何获取用于登录和注册表单的 CSRF 令牌?