2010-05-09 35 views
2

這是一個非常基本的問題,但我不完全清楚如何做到這一點。如何將POST/GET從導軌添加到帶有Nestful的API?

我正在嘗試使用具有基於Web的服務的第三方服務。該服務稱爲Postful。但我不清楚究竟該做什麼?

我看過ActiveResource(http://api.rubyonrails.org/classes/ActiveResource/Base.html)和rest-client,但我仍然不清楚要創建的步驟,代碼和文件。

我想使用Nestful,但我不完全清楚如何使這項工作。 http://github.com/maccman/nestful

http://www.postful.com/service/mail是服務之一(詳細信息發現http://www.postful.com/developer/guide#rest),而是要上傳圖片我要上傳以下(但我不知道我是如何真正做到這一點?)。謝謝!

> http://www.postful.com/service/upload 
> 
> Be sure to include the Content-Type 
> and Content-Length headers and the 
> image itself as the body of the 
> request. 
> 
> POST /upload HTTP/1.0 Content-Type: 
> application/octet-stream 
> Content-Length: 301456 
> 
> ... file content here ... 
> 
> If the upload is successful, you will 
> receive a response like the following: 
> 
> <?xml version="1.0" encoding="UTF-8"?> 
> <upload> 
> <id>290797321.waltershandy.2</id> 
> </upload> 
+0

你已經能夠確定他們是否有上傳文件RESTful接口? – nfm 2010-05-17 22:56:01

+0

我不這麼認爲 - 唯一的接口是上面描述的那個.... :( – Angela 2010-05-17 23:12:00

回答

1

Nestful真的很容易,你應該能夠只是這樣做:

Nestful.post 'http://www.postful.com/service/upload', :format => :multipart, :user => 'foo', :password => 'bar', :params => {:file => File.open('YOUR_FILE')} 
1

我看了一下他們的API,它似乎並不像附件上傳是REST風格的 - 它看起來像只郵購創作是。所以,ActiveResource在這裏不會做這個伎倆。

根據您的開發/生產環境,您可能需要考慮使用更通用的東西,如curl

從手冊:捲曲是一種工具來傳輸數據到服務器或傳輸到服務器......該命令旨在無需用戶交互工作。

你會想是這樣的:

# Encode your username:password as base64 
USERNAME="[email protected]" 
PASSWORD="yourpostfulpassword" 
BASE64_ENCODED_AUTH = `echo $USERNAME:PASSWORD | base64` 

curl -F "@path/to/file/to/upload;type=application/octet-stream" http://[email protected]/service/upload 

我沒有測試過這個,因爲我沒有一個用戶名/密碼 - 但它應該讓你在正確的軌道上。

你可以把它放在/lib的腳本中,並使用你喜歡的方法從你的控制器調用它。

編輯:

所以我試圖與一個虛擬的用戶名和密碼,並使用--verbose標誌curl,和頭看了看右邊。我也收到了一個401 UNAUTHORISED的迴應,所以它看起來很正常。

+0

你有沒有使用Nestful,它看起來像一種與HTTP和REST API進行交互的方式...... – Angela 2010-05-17 23:49:05

+0

我還沒有使用Nestful - 你給'curl'一個試試嗎?在簡單看看Nestful之後,好像你會調用'Nestful.post url,options = {}'(除非postful * *有RESTful附件上傳)與使用'curl'幾乎相當,只是你用Ruby而不是bash來寫它。 – nfm 2010-05-18 09:17:46

相關問題