Fork me on GitHub

An Introduction to HTTP

これまで iOS 上の UI 構築について取り扱ってきました。しかしできることならサーバとデータのやりとりをするインタフェースにほとんどの時間を費やしたいことでしょう。これを行うために Apple が提供する方法は NSURLConnection を使うことです。これはとてもパワフルですが、HTTP リクエストを送信するためには冗長なクラスです。代わりに、BubbleWrap と呼ばれる最新の RubyMotion ライブラリを使う予定です。

BubbleWrap It Up

すでに述べたように、BubbleWrap は iOS SDK 用の Ruby ラッパーのコレクションです。多くの Apple の API は、コールバックが設定されたオブジェクト上の決められたメソッドを呼び出すシステムを使用しています。したがって、BubbleWrap のラッパーの多くはこれらのコールバックメソッドを lambdablock で動くようにしているだけです。例として BubbleWrap::HTTP ラッパーを取り上げる予定です。

Rakefilerequire を追加することを覚えておいてください。

$:.unshift("/Library/RubyMotion/lib")
require 'motion/project'
require 'rubygems'
require 'bubble-wrap'

...

BubbleWrap::HTTP ライブラリでは、HTTP リクエストメソッドとしてそれぞれ HTTP.get, HTTP.post, HTTP.put などの機能を使えます。それぞれのメソッドは引数として URL 文字列とオプションのハッシュ、リクエストが終了したときのコールバックブロックを取ります。以下は、いくつか短いそれらのサンプルです。

BubbleWrap::HTTP.get("http://google.com") do |response|
  p response.body.to_str
end

# BW is alias for BubbleWrap
BW::HTTP.get("http://www.bing.com/search", payload: {q: "some query"}) do |response|
  # sends request to http://www.bing.com/search?q=some+query
end

BW::HTTP.post("https://graph.facebook.com/123123123/comments", payload: {message: "This is a comment"}) do |response|
  # sends request to https://graph.facebook.com/123123123/comments
  # with body params `message=This is a comment`
end

かなり良さそうに見えるでしょう?私たちが使った API は単に GET と POST を使用しただけですが、より多くの情報 (ファイル、ヘッダー、HTTP 認証) をリクエストに追加することもできます。(HTTP documentation で詳細をチェックできます)

ちょっと待って、私たちは実際に何を作るんでしょう?

Get ready for an example on how to build an API-driven App!


Like it? Spread the word