GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

tortilla

tortilla – Web APIのラッピングが簡単にできました

投稿日:

Web APIのラッピングが簡単にできました。

トルティーヤ

Web APIのラッピングが簡単にできました。

PIPによるインストール:

pip install tortilla

クイック使用の概要:

>>> import tortilla
>>> github = tortilla.wrap('https://api.github.com')
>>> user = github.users.get('octocat')
>>> user.location
u'San Francisco'

基礎

TortillaはAPIをラップするために少しの魔法を使います。 ラッパーの属性を取得または呼び出すたびに、URLはその属性の名前またはメソッドのパラメータによって追加されます。 次のコードがあるとしましょう:

id, count = 71, 20
api = tortilla.wrap('https://api.example.org')
api.video(id).comments.get(count)

すべての属性とメソッド呼び出しは、URLの一部を表します。

api         -> https://api.example.org
.video      -> /video
(id)        -> /71
.comments   -> /comments
.get(count) -> /20
Final URL   -> https://api.example.org/video/71/comments/20

チェーンの最後の部分( .get() )は要求を実行します。 また、URLに最後の部分を1つ追加します(オプション)。 これはあなたのようなものを行うことができます:

api.video.get(id)
# instead of this
api.video(id).get()

要約すると、属性の取得はURLの静的な部分を定義するために使用され、それらの呼び出しはURLの動的部分を定義するために使用されます。

一度すべてを連鎖すると、Tortillaは要求を実行して応答を解析します。

現時点では、TortillaはJSON形式の応答のみを受け入れます。 より多くのフォーマットをサポートすることは、今後のTortillaバージョンのロードマップにあります。

解析された応答は束縛され、辞書キーは属性を介してアクセス可能になります。 したがって、ユーザー ‘john’に対して次のJSON応答を取得するとします。

{"name": "John Doe"}

すでに作成されたラッパーを使用してこれを要求すると、属性を使用して応答データにアクセスできます。

>>> user = api.users.get('john')
>>> user.name
u'John Doe'

ヘッダー

APIにアクセスするための一般的な要件は、認証データを提供することです。 これは通常、各リクエストのヘッダーに記述する必要があります。 トルティーヤは、これらの定期的なヘッダーを簡単に記述することができます。

api.config.headers.token = 'secret authentication token'

要求ごとにカスタムヘッダーを定義することもできます。

api.endpoint.get(headers={'this': 'that'})

これらのヘッダーは、ラッパーの既存のヘッダーに追加されます。

パラメーター

URLパラメータは、 paramsオプションでリクエストごとに定義できます。

api.search.get(params={'q': 'search query'})

キャッシング

一部のAPIでは、リクエストの量に制限があります。 このような場合、キャッシングは非常に役に立ちます。 これを有効にするには、 cache_lifetimeパラメータを使用します。

api = tortilla.wrap('https://api.example.org', cache_lifetime=100)

このラッパーで行われたすべての要求は、100秒間キャッシュされるようになりました。 特定の状況でキャッシュを無視する場合は、 ignore_cacheパラメータを使用できます。

api.special.request.get(ignore_cache=True)

これで応答が再ロードされます。

URL拡張

TwitterのようなAPIは、レスポンス形式を指定するURLの拡張子を必要とします。 これは、 extensionパラメータで定義することができます:

api = tortilla.wrap('https://api.twitter.com/1.1', extension='json')

このオプションは、すべての要求またはサブラップでオーバーライドできます。

api.special.endpoint.extension = 'xml'
api.special.endpoint.get(extension='xml')

デバッグ

デバッグモードを有効にするには、 debugパラメータを使用します。

api.debug = True
# OR
api = tortilla.wrap('https://api.example.org', debug=True)

リクエストごとにdebugパラメータをオーバーライドすることができます。

api.stuff.get(debug=False)
api.other.stuff.get(debug=True)

GitHub APIを使用した例:

>>> user = github.users.get('octocat')
Executing GET request:
    URL:     https://api.github.com/users/octocat
    headers: {}
    query:   None
    data:    None

Got 200 OK:
    {u'public_repos': 5, u'site_admin': ...

あなたのデータをお楽しみください。







-tortilla
-, ,

執筆者: