APIのバージョニングは限局分岐でやるのが良い - Hidden in Plain Sightにはブコメしたのですが、Rebuild: 35: You Don't Need API Version 2 (Kenn Ejima)でも本件に言及があったようなので、少し一般論を書いておきたいと思います。 ■Web APIの設計原則について そもそも、良いAPIとはどのような特性をもつものでしょうか? 一般的に、以下の2点が挙げられると思います。 拡張が容易である 拡張時に後方互換性を破壊しない ウェブの場合は、これに加え、 スケーラブルである HTTPに起因する問題に上手に対処できる ことが求められます。 前2者はウェブに限らない要件です。これを満たす設計手法としては、 リクエストおよびレスポンスのパラメータを拡張可能に 互換性を壊す拡張が必要な場合は、関数名を変える 古い関数は従来と同じ機能を
移転しました http://please-sleep.cou929.nu/20130121.html
AngularJS への改宗が完了した「mitsuruog」です。 AngularJS に限らず Single page application(以下、SPA)を構築した場合、認証(Authenticate)とその後の WebAPI での証明情報(Credential)の受け渡し方法について最近悩んでいます。 調べていたら Json Web Token(以下、JWT)を利用した方法がCookies vs Tokens. Getting auth right with Angular.JSで紹介されていて、試してみると結構使えそうでしたので紹介してみます。 目次 1.WebAPI での証明情報の受け渡しの重要性 2.Token を利用した証明情報の受け渡し 3.実現するためのコア技術、JWT(Json Web Token)とは 4.Token を利用した場合の課題など 秘密鍵の管理 リフレッ
社内業務システムのWebAPI実装を考えてみる - おかひろの雑記で作成したような自作WebAPIに、Objective-Cからアクセスするプログラムを作成してみました。 レスポンスはJSONのみ対応とします。 Objective-CからのHTTP接続についてはこの本でもちょこっと紹介されていますが、 エキスパートObjective-Cプログラミング ?iOS/OS Xのメモリ管理とマルチスレッド? 作者: 坂本一樹出版社/メーカー: インプレス発売日: 2011/11/18メディア: 単行本(ソフトカバー)購入: 8人 クリック: 343回この商品を含むブログ (25件) を見るレスポンスをBlocksで処理できるようになっていると便利そうです。 "AsyncURLConnection"で検索するとそれっぽいライブラリがいくつかヒットしますが、今回はこれを使ってみました。 ASyncUR
この記事はPepabo Advent Calendar 2014の11日目の記事です。 前日は、tnmtさんのVagrantのshell provisionerでApacheのビルド済tarボールをOSバージョン毎に作る術でした。 はじめに 今回は、Web APIを作るときに考えることをまとめました。 本当は、社内向けに資料を作っていて、社内の勉強会とかで話せればいいか〜って考えていたんですが、アドベントカレンダーのネタが本当になくて困っていたのでこれを使います。 対象者 APIを作る時、と書いてますが、クライアント側の人にとっても知っておく必要があることなので、サーバ側の人・クライアント側の人両方が対象者です。 APIを作るときに考えること 「APIを作るとき」と言っても、色んな状況があります。 まずはそれを絞ります。 APIの種類 プライベートAPI アプリのAPIなど使う人が限定され
JSONPって、クロスドメインでデータをとってこれて、Web APIとかはこれで実装されているんでしょ。 なんとなくわかる気がするんだけど、自分で作ってみるとなんかうまく動かない。 あるいはその手前で、どういう風に実装していいかわからない。 とくに自分がAPIを提供する側になると、よけいよくわからない。 Wikipediaの解説なんか、わけがわからないよ。 こんな感じの方はいませんか。 というか、ちょっと前の自分はこんな感じでした。 いろんなサイトを調べまくって、ある程度わかってきた気がしますので、後のためにここに残しておきます。 ああ、あのころの自分に教えてあげたかった。 まずJSONって何さ? JSONPにたどり着いた人はJSONのことは知っていると思いますから、簡単に。 こんな感じの「テキスト」のことですよね。 { "key1": "value1", "key2": "value2"
BaasBoxと同様に、オープンソースのmBaaSであるApache Usergridについて起動させてログインするまでの手順を試した。 こいつはランチャーでGUIを使うので、Vagrant環境でさくっとできるCLI環境ではなく普通のVM環境で試すと良さそう。 ダウンロード&起動 http://usergrid.incubator.apache.org/docs/getting-up-and-running-locally/ のとおり進める。 準備としてJDK 1.7とmavenが必要とあるが、別件でJDKは入れているので省略。 Ubuntuなのでmavenはとりあえずこんな感じで入れた。 $ sudo apt-get install maven $ mvn -v Apache Maven 3.0.4 Maven home: /usr/share/maven Java version: 1
楽観的排他制御を利用する非同期的なトランザクション実行であればスケーラビリティを損ねることなく2phase commitが可能である。これは、分散KVSにおけるスケーラビリティと一貫性の両立について で主張したように、同期的な2phase commitは密結合に誘導することになるため、矛盾するように思えるかもしれない。だがそんなことはない。 前半はまずこの話から入るが、後半ではRESTに関する間違いについて、3つほど思うところを述べたい。 楽観的排他制御と2phase commit reflexworksではFeedやEntry単位でatomicなトランザクション処理を行えるが2phase commitはサポートしていない。これを許すと密結合になってスケールしないからである。だが、これはあくまで同期的な処理の話であって、ネットワーク障害への耐性を考慮され、非同期処理やオフラインで使えるので
原文(投稿日:2013/05/26)へのリンク 数年前、Ganesh Prasad氏はインターネットはRESTより基礎的かどうかを問うた。その後も氏はRESTやSOA、最近はクラウドについて、RESTの原則を支持しながら議論を続けてきた。近頃、LinkedIn REST Architectsグループにポストされた"RESTの欠点は何か?"という質問に対して、氏は次のように、自身のブログの内容を繰り返すことで答えている。 RESTには"欠点"のようなものがあるとは思いません。RESTはRESTという名が示す通りに上手く動作しています。しかし、RESTアーキテクチャの実装はHTTPプロトコルしか使わないことは覚えておくべきです。将来は他のプロトコルを使う実装を構想することができるでしょう。そこでは何かしらの改善が行われるはずです。 氏は続けて、改善の余地がある4つの領域について話す。ちなみに氏
Rubyで簡単、マッシュアップサービスを公開してみよう! - 第2回 - 簡単Sinatra!WebAPI・OAuth認証を使ってみよう 今回のワークは、前回学んだ「Sinatra Framework」と「Ruby」を応用し、皆さんが使ってみたいTwitter APIを使用したソースコードを提出するというものです。この記事ではオープンソースライブラリのRubygemsの使い方も解説しているので、参考に課題にチャレンジしてみてください。 第1回目だった前回は、「Ruby言語」とは何か、そしてRuby Frameworkである「Sinatra」とは何かについてお話した後、簡単にコーディングの仕方についてお伝えしました。 第2回目となる今回は、オープンソースライブラリである「Rubygems」と、前回学んだ「Ruby」と「Sinatra」を利用して、WebAPIやOAuth認証の利用方法をお
第8章 マッシュアップ セキュリティトークンとOAuth 2.0 OAuth 2.0は、アクセス認可の判断結果(誰々は、どこそこのリソースにアクセスしてよいということ)をネットワーク越しに安全に伝達することを目的としたプロトコル仕様である。このプロトコル仕様を公式に規定した RFC 6749,“The OAuth 2.0 Authorization Framework” が2012年10月に発行された。 マッシュアップに使われる素材サーバ中のリソースを、資格あるユーザに対してのみ開示するように保護して制御する案件において、OAuth 2.0は有用な手段となる。 セキュリティトークンと引き換えにリソースを得る構図 マッシュアップに組み入れるゲストリソースには、有償のものや守秘性の高いものもあり得る。このようなリソースを提供する素材サーバは、通常、アクセス制限を設け、これらを保護するようにする
今まで仕事上、業務システムを開発してきましたが、ブラウザでアクセスするWebアプリケーションばかりでした。 しばらくはWebアプリ開発も続くでしょうが、ようやくタブレット端末を会社で活用する流れが出てきたので、 せっかく開発したWebアプリにタブレット端末からでもアクセスできるように、WebAPIの実装について考えてみました。 なおjQueryMobileなどを使ったWebアプリにする選択肢もありますが、ここはあえてJSON/JSONPを返すWebAPIの実装を考えます。 仕様 http/httpsアクセスできるものとし、レスポンスはJSON/JSONPで選択できる。 業務システムなので、認証がある。 認証は一度行ったらログアウトなどをしない限り継続する。 認証部分はなるべく簡単に独自実装。 ログアウトも可能。 システムの利用ユーザーを変更する場合はログアウトして再ログイン。 エラーが発生
WebAPIの公開 APIとは、何らかの機能を提供するプログラムのことです。WebAPIとは、Webで提供されたAPIということです。たとえば、地図データを提供するAPIや商品の検索結果を提供するAPIが有名です。なるべく多くの人にアクセスしてほしい情報を持っている企業は、WebAPIとして情報を提供することが多くなりました。WebAPIという便利なインターフェースを用意することで多くのユーザにアクセスしてもらい、広告ビジネス等につなげていくのが狙いです。 またWebAPIは、多くの形式に対応していたほうが、多くのユーザに利用してもらうことができるため、なるべく多くの出力形式に対応しようとする傾向があります。以前はSOAPという形式が多く使われていましたが、実装方法が煩雑であったため、現在ではREST、JSON、JSONPのように実装がシンプルな形式のものが多く使われています。 WebAP
最近、Web APIの認証をどうすべきか考えている。 例えば次のようなケースをどうするか。 「既存のWebサイトがあり、既にユーザIDとパスワードによる認証によって、ブラウザでデータを提供している。 今回、この提供データをブラウザの画面ではなく、REST APIにて取得可能にしたい。 このデータはユーザ毎に取得可能な値が違うので、認証、または認可によって制限をかけたい。」 ユーザーがブラウザからIDとパスワード(以下ID/PW)を使ってログインする方式を、そのままWeb APIにも適用しても安全なのだろうか。 Web APIの先にはスマホアプリやシェルスクリプトなどから直接ログインするものなどが考えられるが、安全かつシンプルに実装するにはどうしたらいいのだろうか。 私はセキュリティの専門家ではないので間違った考え方をしている可能性もあるが、誰かの目に留まって助言いただけるかもしれないので、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く