2009-10-27 13 views
45

私は自分自身のPHPライブラリを開発しており、私のAPIからRESTful Webサービスを呼びたいと思います。 PHPでこれを行うことができますか?もしそうなら、基本は何ですか?PHPでRESTを使用できますか?もしそうなら、どのように?

+6

+1:downvoteをオフセットします。 –

+1

私は彼がPUTとDELETEリクエストメソッドを処理することを頼んでいると思うので、無効な質問ではないと思います。 – bart

+0

質問をあなたに残してください。ここで何を証明しようとしていますか?それは43,000以上のビューを持ち、PHP + RESTの5番目のGoogleの結果です。このサイトが意味するものを殺すのを止めなさい - 迷惑な質問。 –

答えて

38

RESTはHTTPプロトコルの同じメソッドをクライアント/サーバアーキテクチャの設計に適用しているため、PHPはすでにGETやPOSTなどのHTTPプロトコル要求を処理するのに優れています。 PHPは、RESTサービスの開発を容易にするために特に適しています。

RESTは、既に存在する同じhttpパターンのアプリケーションです。だから、

あなたが現在のようなものないアプリケーションがある場合:だから、それはあなたが希望RESTにするために、テーブル内

  1. HTMLフォーム
  2. PHPプロセス
  3. HTML出力

を必要があります:

  1. パラメータを受け入れるウェブから。 getやpostのようにパラメータを受け取るので簡単です。基本的には同じです。 JSONまたはXMLのいずれかで
  2. PHPプロセス
  3. 出力。そしてそれはそれです!

    かなり簡単です。

ここで難しいのは、生成するAPI(プログラマーに優しい)を作成することです。あなたは一例としてflickr APIを見て、私は示唆している場合には

は推測するのは非常に開発者に優しいのは簡単ですし、良いドキュメントを持っています。 APIの詳細情報については

このプレゼンテーションを見て:How to Design a Good API & Why it Matters (Joshua Bloch)

最後にRESTfulなAPIもPUTを実装し、あなたが持っていた場合、それは例えば、感覚

を行うとhttpプロトコルのDELETEメソッド必要がありますあなたのAPIの削除アクションは、httpプロトコルからdeleteメソッドを受け取るべきです。ポストリクエストの一部としてアクションパラメータを送信するという、より一般的なものの代わりに。

編集:置き換え「と「PHPは、デフォルトで、残りは」RESTは、クライアント - サーバ・アーキテクチャとPHPの設計にHTTPプロトコルの同法の適用は、HTTPプロトコル要求を処理するために、すでにとても良いですので、 PHPはRESTサービスの開発を容易にするために特に適しています。

さらに、そのアクションがあなたのAPIに合っている場合、適切なPUTメソッドまたはDELETEメソッドを実装すべきであるという最後の注意を追加しました。

+2

-1:申し訳ありませんが、デフォルトではRESTはありません。たとえばRESTでは、POSTリクエストはGETとは非常に異なり、DELETEとPUTもサポートする必要があります。 –

+0

@Jim Ferrans - なぜDELETEをサポートする必要がありますか? –

+0

@elviejo - stackoverflowのURLを見ると、RESTのURLが表示されます。これは疑問符がないので、PHPがデフォルトで行う解析ではありません。 –

17

あなたはこの記事とフォローアップを見てみたいことがあります。 http://www.gen-x-design.com/archives/create-a-rest-api-with-php/

あなたの質問は非常にオープンエンドなので、このチュートリアルでは、最高の出発点であってもよいです。

上記のリンクは、もはやこのチュートリアルをチェックアウトするように作業していない:

http://net.tutsplus.com/tutorials/other/a-beginners-introduction-to-http-and-rest/

+1

リンクが壊れています。 – kta

+0

@kaziTanvirAhsan - ありがとう、より良いリンクを入れてください –

4

the original source of the term RESTに戻って、そしてあなたはそれが何を意味するのかを理解することを確認するために傷つけることはできません。

4

クライアント側のことを考えているなら、Matt SukowskiのPESTをチェックすることをお勧めします。

あなたはGitHubの上のリポジトリを見つける: https://github.com/educoder/pest

はまた、このスレッドをチェックアウト: PHP REST Clients

アップデート2013年12月13日:
これは非常に多くのライブのオープンソースプロジェクト、マットですSukowskyは今夏、新しい世話人に手渡した。それは彼が十分な時間を惜しみなく費やすことができなかったことを感じなかったし、それ以来たくさんのコミットがあった。だから、PestはこれまでにPHPでRestをやったことでこれまで以上に優れています:)

5

PHPのネイティブSoapServerクラスのRESTに相当するクラスを開発しました。

RestServer.phpファイルを含めて、次のように使用してください。また

http://myserver.com/path/to/api?method=sayHello&name=World 

(クエリ文字列で提供されているのparamsを注文するかは重要でないことに注意してください、paramキーの名前だけでなく、:。

class Hello 
{ 
    public static function sayHello($name) 
    { 
    return "Hello, " . $name; 
    } 
} 

$rest = new RestServer(Hello); 
$rest->handle(); 

次に、あなたは、このような電話をかけることができますメソッド名は大文字と小文字を区別しません)。

+0

なぜこのクラスはHTTPプロトコルを区別しないのですか? – Isius

+0

私はもともとそれを使用してアプリでそれをする必要はありませんでした。フォークして改善してください。 –

関連する問題