【发布时间】:2018-08-08 22:18:43
【问题描述】:
我在使用 API 时遇到了很大的问题。我正在尝试学习请求数据的基础知识。
测试 API 的 url 是 aq-test.000webhostapp.com/v1/,它返回一个简单的“hello world”,没有问题。
向 aq-test.000webhostapp.com/v1/users 发出 GET 请求会返回所有创建的用户(只有一个)。这个 API PHP 服务器有一个验证函数,当我向它发出请求时,它会检查标头是否具有授权令牌:
$headers = apache_request_headers();
$response = array();
$app = \Slim\Slim::getInstance();
// Verifying Authorization Header
if (isset($headers['Authorization'])) {
// get the api key
$token = $headers['Authorization'];
// validating api key
if (!($token == API_KEY)) { //Do Stuff}
我的问题是,我正在发送带有 Autorization 令牌的标头,但它根本不起作用。这是我的代码:
var settings = {
"async": true,
"crossDomain": true,
"url": "http://aq-test.000webhostapp.com/v1/users",
"method": "GET",
"headers": {
'Content-Type' : 'application/x-www-form-urlencoded',
'Authorization': '3d524a53c110e4c22463b10ed32cef9d'
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
无论我做什么,我总是收到不好的请求。我什至使用 AngularJS 的 $http.get 发送标头来做到这一点,但它没有用。
这很奇怪,但如果我使用 PostMan 发出请求,(PostMan 文件 https://www.dropbox.com/s/3ms71lbnu1jb4wj/api_test.postman_collection?dl=0)它可以完美运行。事实上,我的代码是基于 PostMan 的请求!我在这里做错了什么?
希望大家能不吝赐教,因为我是无能的atm。
【问题讨论】:
-
“错误请求”是什么意思?它是 apache 错误、php 错误还是您在 REST 客户端上遇到的错误?另外,如果您能澄清您正在使用的技术(软件)。
-
您是否看到在浏览器开发工具中设置了“标题”?这将有助于缩小问题所在
-
另外,如果您正在学习基础知识,我建议您查看
fetch或axios。 Fetch 将成为下一个标准 (AFAIR),developer.mozilla.org/en-US/docs/Web/API/Fetch_API,学习这一点可能会有所帮助。
标签: javascript api