2012-07-27 21 views
5

私は最近SOAについて多くのことを読んでいて、役に立つものを実装しようとしています。私はRESTful APIを作成する簡単なブログから始めました。ここまでは順調ですね。それは完全に動作します。しかし、私はRESTfulなAPIを消費するWebインターフェイスを書くときに私の髪を引き離そうとしています。私は正しいことをしているかどうかわかりません。PHPアプリケーションでの適切なRESTful SOAアプローチ

たとえば、Webインターフェイスには管理パネルがあります。その管理パネルは、file_get_contentsとstreamオプションを使用してAPIにHTTPリクエストを送信します。今のところ、APIはウェブインタフェースと同様にlocalhostですが、プロセス全体が少し遅くなります。これは正しいですか?これはSOAを実装する適切な方法ですか?また、私は検証のために少し重複したコードを扱っています。どこでデータを検証する必要がありますか? APIまたはWebインターフェイスでは?最善のアプローチは何ですか?

ヒント、チュートリアル、特に本は歓迎します。これはSymfonyコンポーネントの上に構築されたSilexを使用して実装されています。

+1

ここで大声で考えてみましょう。 Web Interfaceはlocalhostを介してホストされているため、通常はリクエスト数が増え、トラバースするインターネットはありません。あなたのコンピュータはネットワークカードから出る前に要求をすぐにループしています。 思考のための食べ物が増えました。 APIが独自のWebページを提供する以外の用途を持っている場合は、APIでデータ検証を構築します。これにより、API自体とウェブサイトの両方のユーザーにリリースすることができます。 – Kevin

答えて

1

これはまさに私のやり方です。 localhostとの接続は最初はオーバーヘッドに見えるかもしれませんが、これは機能です.Webインターフェイスアプリケーションをどこにでもデプロイする準備ができていて、いつでもどこでもAPIを使用できるためです。もちろん、あなたはこれにいくつかのSSLをかけます。

検証では、APIで検証し、そのような状況の場合はHTTP status codesを返す必要があります(無効なパラメータの場合は「400 Bad Request」など)。このようにして、他のクライアントはAPIからの応答を解釈して、それを処理して、必要な方法を表示することができます。 Webインターフェイスの場合は、HTTPステータスコードに基づいて小さなエラーメッセージが表示されます。

他にどんな問題がありますか?また、一般的なSOAアーキテクチャに関する限り、this bookは非常に優れています。

+0

私は原則として同意しますが、あなたのAPIがフロントエンドと同じボックスにある場合は、同じ実行内で呼び出して、ブートストラップのリソースと接続のオーバーヘッドを節約してください。明らかに、ローカルとリモートの切り替えは可能な限りシームレスでなければなりません。クライアントオブジェクトを使用してこれを抽象化することができます。 –

関連する問題