2017-01-22 3 views
0

私はLaravelの新機能で、サードパーティ製のAPIとの接続に最適な場所がどこになるのだろうかと思っています。ここで、ファイル経路がIで作成したコントローラへの要求Laravel(4.2):サードパーティのAPI接続をどこに置くのですか?

2)ルートをバックエンドにデータを送信する(角使用

1)ユーザーがフォームへの入力に入り、私のシステムで発生する必要がある要求の一般的な流れでありますLaravel(私は実際にこのためにlaravelコマンドラインを使用して作成したリソースを使用しています)

3)どこかで、このリクエストからデータの一部を取り出し、CURLを介してサードパーティに送信して取得する必要があります応答バック

4)他のどこかで、私はその応答を解析し、そこでビジネスロジックを実行する必要があります私はその結果の一部を取り上げてクライアントに送り返します。他のデータはデータストア(MySQL)に保存されます

これで、データアクセスレイヤーが最終的に作成されるラーベルモデルになると推測しますが、理想的な場所がどこにあるのか混乱していますAPIの接続やビジネスロジックの処理にも使用できます。

これはミドルウェアを介して行う必要がありましたが、ドキュメントをさらに読むと、これは単なるフィルタレイヤーのように思えます。私はもちろん、これをモデルに入れることができ、それは「Fat Model Skinny Controller」パラダイムを満足させるように見えますが、何らかの理由でそれを好きではありません。私は自分のデータアクセス層をビジネスロジックから独立させたいと思っています。これは明らかに間違っているので、コントローラにこのようなものを入れたくありません。

だからどこに行けばいいですか?

+0

Laravelを初めてお使いになると、好きではないのに、なぜ古くなったバージョンから始めるのですか?これはあなたが採用している既存のコードベースですか? – ceejayoz

+1

私はそれがすべてセットアップされるまで、それが古いバージョンであることを実際には気付かなかった、私はこれをフォローしていた:https://laravel.com/docs/4.2/quick#installationこれはlaravel.comサイトにあり、バージョン4.2をインストールするので、私はそれが最新のバージョンであると推測しました。 - 補遺 - と私はそのリンクに持って来た理由は、それがグーグル 'ラーベルクイックスタート'の最初の結果だったということです –

+0

OK、残念ながら、Laravel 5.3で新鮮に始めたいと思います。コーディングと機能性の点で、4と5の間に大きな改善があります。 – ceejayoz

答えて

1

これが私の提案です:

ExternalAPIと呼ばれるプレーンなPHPクラスを作成し、appフォルダ内のAPIと呼ばれるフォルダに保存します。次に、APIを呼び出して結果を解析するメソッドを作成します。このクラスをFacadeの中に入れて、使いやすくすることもできます。

次に、解析されたデータを受け取り、ビジネスロジックを実行する別のクラスを作成します。 APIProcessorとし、app/APIフォルダに保存しましょう。

最後にコントローラでExternalAPIクラスからメソッドを呼び出し、結果をAPIProcessorクラスに渡してから結果を取得してユーザーに返します。

明らかにこれらの名前はです。であり、これらのクラスはビジネスドメインに合わせて適切な名前を選択し、必要に応じて別のディレクトリを選択して保存する必要があります。

ここで行うもう1つの良いことは、APIとの通信を担当するクラスへのインターフェイスを作成することです。このクラスを必要に応じて別のクラスに簡単に置き換えることができます。

+0

素晴らしい、提案のおかげで。私はこれを正しい可能性があるとマークしますが、実際に試した後でのみです(少し時間がかかるかもしれません)。 –

+0

@DallasCaley良い解決策を見つけるために必要なだけの時間を取ってください。私たちとあなたの発見:) –

関連する問題