4

私はphpでRESTfulを開発しています。現在、MVCデザインパターンでコーディングを開始しています。ビューファイルがインターフェイスとして機能している場所。グラフィカルUIを表示していないが、すべてのリクエスト処理ロジックを備えたインターフェース。

さて、私の質問は、コーディングの方法が正しいか、PHPでRESTful APIを作成するためのより良い方法がありますか?


私のインスピレーションは、JavaEEアプリケーションモデルに基づいています。モデルとしてエンティティクラスがあり、コントローラとしてJava Beanがあり、リモートインターフェイスはクライアント(ビューの一種)から呼び出されるメソッドのリストです。


私は正しい方向に進んでいますか?

4

4 に答える 4

1

PHPベースのMVCフレームワークでRESTfulAPIを構築するための良い例は、http://www.chrisdanielson.com/2009/09/02/creating-a-php-rest-api-using-the-zend-にあります。フレームワーク/

この例では、このプロセスを簡素化するZend_Rest_Controllerと呼ばれるZendFrameworkのクラスを拡張します。ソースコードを見て、それらがどのように実行されるか、および独自の実装を作成する方法についてのアイデアが得られるかどうかを確認できます。

ただし、質問に答えるには、インターフェイスとして機能するコントローラーが必要です。したがって、POSTリクエストをmyapp.com/comment(commentはコントローラー)に送信すると、新しいコメントを追加しようとしていることがわかります。同じURLにGETリクエストを送信すると、すべてのコメントが必要であることがわかり、myapp.com / comment / 4にGETリクエストを送信すると、ID4のコメントを取得する必要があることがわかります。ビューはAPIの内部機能とは何の関係もありません。

于 2012-06-16T00:38:48.943 に答える
1

YiiやKohanaなどの既存のRESTfulPHPMVCフレームワークを使用できます。どちらも非常に軽量で、RESTfulアプリケーションをネイティブにサポートしています。

既存のアプリケーションの場合、MVCモデルでは、すべての要求とロジック処理はビューではなくコントローラーによって実行される必要があると規定されています。物事は通常、ここでは2つの方法のいずれかで行われます。

(1)コントローラーには、各タイプの要求に応答するための特別なメソッドがあり、RubyOnRailsに見られるように(主に各コントローラーアクションの最後に)異なる動作をします。

respond_to do |format|
  format.html 
  format.xml  { render :xml => @events}
  format.json { render :json => @events}
end

(2)コントローラーは、現在要求されている形式を検出し、そのテーマ/レイアウト全体を、たとえばJSONテーマに変更します(すべてのレイアウト/ビューは同じデータを受け取ります)。これは私の現在の実装であり、次のようになります。

$format is any of [html,json,xml] (detected from url suffix)
$controller->layout = "$format";
$controller->render($viewFile, $object);

HTMLレイアウトでファイルを表示

<div id='model>
  <h1><?=$object->title?></h1>
  <p><?=$object->description?></p>
</div>

JSONレイアウトでファイルを表示

echo json_encode($object);

XMLレイアウトでファイルを表示

/** Loop and build XML tree */
于 2012-06-16T00:59:51.313 に答える
0

APIファサードデザインパターンに関する一連のウェビナーを行いました。実装に使用する基盤となるテクノロジーに関係なく、概念が役立つことを願っています。ここで見つけることができます

http://youtu.be/n8B-K3iJ7b4

http://youtu.be/MRxTP-rQ-S8

http://youtu.be/aJBhVm4BbCI

于 2012-12-27T07:18:06.207 に答える
0

Apigilityは、RESTおよびRPCサービスを作成する目的でsoleyで設計されたZendFramework2ベースのプロジェクトです。

https://apigility.org/

箱から出してすぐに、認証のためにMySQLとOAuth2を使い始める簡単な方法が提供されます。

于 2014-11-18T23:17:06.053 に答える