我正在尝试向Chef服务器上的端点发出API GET请求,并想知道如何使用我的用户名和username.pem文件来成功发出请求。我目前正在使用extJS框架来执行此操作。
我有一个非常类似的应用程序:
我希望将GET请求的结果显示在网格中。
使用REST API测试网站(REST API testing),我已经能够使用以下代码发出简单请求:
var listOfCookbooks = Ext.create('Ext.data.Store', {
autoLoad: true,
autoSync: true,
model: 'Optional Cookbooks',
proxy: {
type: 'rest',
url: 'http://jsonplaceholder.typicode.com/posts',
reader: {
type: 'json',
rootProperty: 'data'
},
writer: {
type: 'json'
}
},
listeners: {
write: function(store, operation) {
var record = operation.getRecords()[0],
name = Ext.String.capitalize(operation.action),
verb;
}
}
});
以前,我一直在使用PHP包装器来调用Chef Server API,这允许我设置我的用户名和username.pem文件:
<?php
use Guzzle\Http\Client;
use LeaseWeb\ChefGuzzle\Plugin\ChefAuth\ChefAuthPlugin;
// Supply your client name and location of the private key.
$chefAuthPlugin = new ChefAuthPlugin("my-dashboard", "my-dashboard.pem");
// Create a new guzzle client
$client = new Client('https://manage.opscode.com');
$client->addSubscriber($chefAuthPlugin);
// Now you can make calls to the chef server
$response = $client->get('/organizations/my-organization/nodes')->send();
$nodes = $response->json();
?>
由于
答案 0 :(得分:0)
当你说extJS我假设你正在谈论从浏览器这样做。建议不要这样做,因为您必须将整个RSA私钥加载到不安全的Javascript中,因为您无法合理地确保它不会泄漏到其他上下文。您需要某种代理(例如您提到的PHP代码),它使用更传统的浏览器会话身份验证方法,如cookie。总的来说,这将是非常困难和烦人的,我建议你缩小你需要的范围。