使用jQuery和REST创建Amazon S3存储桶

时间:2011-08-15 07:18:54

标签: javascript jquery rest amazon-s3

我想尝试通过REST使用jQuery和Amazons S3 API来做一些事情。我的关键问题是不熟悉REST(或者我认为不是很清楚)知道这种方法是否可以远程正常工作。我已经尝试无休止地搜索一些例子并且没有结果,也许我正在寻找我不知道的错误的东西,但作为最后的努力,我想我会在这里找到我最喜欢的地方。

我需要做的就是发送。向API发出请求以创建存储桶。根据我提出的S3 API文档

var AWSAccessKeyId = "";
var AWSSecretAccessKey = "";
var AWSDomain = ".s3.amazonaws.com";

function createNewBucket(bucketName)
{
    var bucketString = 'HTTP/1.1\n';
    bucketString += bucketName + AWSDomain + '\n';
    bucketString += 'Content-Length: 0 \n';
    bucketString += 'Date: Wed, 01 Mar  2009 12:00:00 GMT \n';
    bucketString += 'Authorization: AWS ' +  sha1_string;

    $.ajax({
        url: bucketName + AWSDomain,
        type: 'PUT',
        data: bucketString,
        success: function(data) 
        {

        },
        error: ''
    });
}
虽然上面的概念并不完整但我刚刚开始,我开始质疑这种方法的想法是否会起作用..如果它是用于上述或以此处提供的任何方式为了帮助我如何处理响应以了解它是否成功?我知道如果能把这件事打成一片,我可以处理其余的问题。它只是解决了第一个驼峰,并弄清楚我是否正确的方式。还值得一提的是,无论是否有像jquery这样的lib的帮助,我一直在做这个纯粹的javascript风格。我不能在这个概念中使用PHP等。所以如果有人能给我一块骨头,我会非常感激。

另一方面,有没有人知道是否有实际测试类似这样的东西的方法而没有实际拥有S3帐户,因为我无法支付一个帐户只是为了测试,更不用说任何其他原因。

1 个答案:

答案 0 :(得分:3)

首先,我感觉你是消费网络服务客户端的新手。 通常最好从简单的事情开始。

如果我有一个返回字符串的资源...说 test.html - > “Hello World!” 此网络服务的网址为 some-realy-long-id.s3.amazonaws.com 那么我们有以下几点:

$.ajax({
    url:'some-realy-long-id.s3.amazonaws.com/test.html',
    type: 'PUT',
    data: {
        'myKey':'myValue'
    },
    success: function(data) {

        //alert dialog containing "Hello World!"
        alert(data);
    },
    error: ''
});

您必须记住,来自浏览器的请求遵循同源策略,因此,除非您计划使用 JSOP 或其他一些跨域黑客,否则您将遇到麻烦。

P.S。另一个小建议是在Javascript中使用右手括号,因为它执行分号插入(如果你返回一个对象文字,它会咬你)。

哦,是的,许多旧的浏览器不支持您可能需要考虑的“PUT”。