2011-01-16 12 views
0

ここ数週間、私はiOS開発について学びました。自然にAPIの世界に導いてきました。さて、インターネットを巡って、私はRESTアーキテクチャーの使用が非常に推奨されていると結論づけました。その単純さと容易な実装のためです。RESTful APIを作成するには?

しかし、私はRESTの実装側で本当に苦労しています。私はその概念を理解している。 HTTPメソッドを動詞として使用してリクエストのアクションを記述し、適切なレスポンスコードで応答するなどがあります。ただ、コード化する方法がわかりません。

URIをオブジェクトにマップする方法がわかりません。私はdomain.com/api/user/address?user_id=999のGETリクエストがユーザー999のアドレスを返すことを理解していますが、/ user/addressから何かを照会する方法データベースが作成されました。

これはすべて1つのPHPスクリプトでコーディングされていますか?私はそうのようなURIをつかむ方法を持っているでしょう:

$array = explode("/", ltrim(rtrim($_SERVER['REQUEST_URI'], "/"), "/")) 

とPHPスクリプトがユーザーに私の要求を指示しますので、その後のサイクルは、その配列によって、最初に私は、「ユーザー」のための要求を持っているでしょうオブジェクトを作成し、アドレスメソッドを呼び出します。それは実際に起こるのでしょうか?

私が得意でない主なことは、そのURI /ユーザー/アドレス= id = 999がどうにか分解されて実行されていることです。実際にはコードに解決されますか?

class user(id) { 
    address() { 
    //get user address 
    } 
} 
+0

自動的に行う魔法の方法はありません。 1つの大きなスクリプトである必要はありませんが、関連するコードに*リクエストをルーティングする方法が必要です。これは、Apacheのmod_rewrite(または他のWebサーバーの同様のリダイレクトモジュール)、またはREQUEST_URIを見て適切なコードを呼び出すindex.phpによって行うことができます。 – Fanis

+0

http://weierophinney.net/matthew/archives/228-Building-RESTful-Services-with-Zend-Framework.html - それを行う方法の一例として、同じことを達成するための多くの方法があることに注意してください終わり。 –

+0

ちょうどコメントですが、あなたのURIスキームは少し混乱していると思います。より良い例は、http:// domain.com/api/user/99/address'のようになります。 –

答えて

1

これは2つの質問です。

RESTful HTTP動詞を受け入れるには、$_SERVER["REQUEST_METHOD"]を照会する必要があります。より特殊なHTTPリクエストが受信されない限り、通常のGETまたはPOSTが含まれます。全体的なRESTのバズはそれ自体が誤解を招くだけでなく、ルーティングのためだけにHTTP動詞を誤用することにもなります。

とにかく、リクエストURLの関数へのマッピングは、2つの方法で実現できます。静的マップ(URLパターンと宛先メソッドをリストする配列など)を使用するのが最も信頼できます。ほとんどのPHPフレームワークでは暗黙的なマッピングが使用されています。

$args = explode("/", trim($_SERVER['REQUEST_URI'], "/")); 
$class = array_shift($args); 
$method = array_shift($args); 
call_user_func_array("$class::$method", $args); 

これはセキュリティ上の悪い例です。許可され、特別に用意されたクラスとメソッドだけが要求を受け取ることができます。ほとんどのフレームワークは、既知のパスから読み込んだ後に許容可能な基本クラスから派生したものかどうかをチェックしたり、インスタンス化したりします。しかし、静的なマップが本当に好ましいです。

とにかく、正規表現マッピングまたはmod_rewriteによる処理も一般的です。 HTTP動詞を利用するには、メソッド名としてHTTP動詞を含めるだけです。

1

実際に現在説明しようとしているAPIはnot RESTfulです。 RESTfulなAPIを作成する方法については、多くの情報源があります。したがって、まずAPIを定義し(クライアントソフトウェアがAPIをどのように使用するかを考慮して)、APIを実装する必要があります。ほぼすべてのRESTful APIをPHPで実装できると確信しています。

Hereは、RESTful APIの作成方法に関するヒントです。

私の意見では、GlassFish Server REST InterfaceはRESTfulデザインの良い例です。それはあなたのビジネスロジックではなく、プレゼンテーションに焦点を当てて言うようにhttp://getfrapi.com/

-

関連する問題