2011-08-15 99 views
1

我想尝试通过REST使用jQuery和Amazons S3 API来完成一些操作。我的关键问题是不能很好地熟悉REST(或者不像我所知的那样)以知道这种方法是否可以远程正确工作。我曾试着无休止地寻找一些例子的珍闻,并且没有结果,也许我正在寻找我不知道的错误,但作为最后的努力,我想我会在这里打到我最喜欢的地方。使用jQuery和REST创建Amazon S3存储桶

我需要做的是发送。向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: '' 
    }); 
} 

虽然概念是不完整的与我刚开始它上面,我开始质疑,如果这种思想的做法,甚至是去上班。而如果它是与上述工作或通过任何方式提供的帮助,我怎样才能与答复一起工作,以了解它是否成功?我知道,如果我能把这一块钉在一起,我可以在大部分时间处理剩下的问题。它正在处理第一个驼峰,并确定我是否以正确的方式开展工作。还值得一提的是,我一直负责完成这种纯粹的JavaScript风格,无论是否有像jQuery一样的lib的帮助。我不能在这个概念中使用PHP或类似的东西。所以如果任何人都可以抛出一块骨头,我会非常感激。

在附注中,有没有人知道这是否是一种实际测试类似这样的东西而没有真正拥有S3账户的方法,因为我无法仅仅为了测试而支付账户,更别说任何其他原因。

回答

3

首先,我感觉你对于消费Web服务客户端是一个相当新的东西。 通常最好从简单的事情开始。

如果我有一个返回字符串的资源...说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”。

+0

我更关心的是我现在发送的数据是否正确,比如在我的小示例中使用“bucketString”。另外我注意到在你的例子中你有两次“data:”,一次不会写另一个? – chris

+0

对不起,我会更新。 – martin

+1

既然你看起来是Javascript的新手,我肯定会推荐阅读和收听来自** douglas crockford **的任何内容,我会启发你对Javascript的基本原理(和自然) - 只是不要把他当作太认真的tho。 – martin

相关问题