2017-09-30 17 views
0

私は直接DBにアクセスできないプロジェクトで作業しています。これは、クラッシュした操作のために外部APIを使用します。 グッとパッケージで作っています。 私は編集フォームに苦労しています。このようなもののベストプラクティスは何ですか?外部APIとLaravelでの作業と編集のベストプラクティス

get()(エンドポイントのすべての要素を取得)とgetItem($ id)(個々の要素)メソッドを持つApiBridge.phpを作成しました。

ルート/エンドポイントのコントローラでは、エンドポイントのすべての要素を一覧表示し、ビュー(データテーブル)を作成する要求を行い、ユーザがそのリストから編集ボタンをクリックすると、get ()とgetItem($ id)要求を/ endpoint/idルートのコントローラの同じメソッドに渡します。

そして、これは私の例である:

  • ApiBridge.phpはlaravelアプリケーションと外部のAPI

  • するためのブリッジでは、方法は、フォームビューを作成する方法です作成します。ここで

は、私のコードの例です:

https://paste.laravel.io/93577c7d-0fc4-4b7b-b6cd-a58e6b286fa6

だから、どのようにあなたは、外部APIでの利用laravelの私の方法を解釈します。そして、私に推薦する簡単な方法やベストプラクティスはありますか?

ありがとうございます。

答えて

0

私はあなたにすべてのCRUDを読んでいるだけでなく実行するつもりなので、あなたには1つの提案しか与えません。現在のAPIは、データベースの作成、削除、編集を実行する前に認証を受けるよう求められます。最善のアプローチは、カスタムベースのコントローラの例を作成することです:あなたはあなたがしているので、多くのルートを持ってしようとしているので、今

class ClientController extends Controller { 

protected function performRequest($method, $url, $parameters = []) { 

    $client = new Client(); 

    $response = $client->request($method, $url, $parameters); 

    return $response->getBody()->getContents(); 

} 

protected function performGetRequest($url) { 

    $contents = $this->performRequest('GET', $url); 
    $decode = json_decode($contents); 
    return $decode->data; 
} 
protected function getAllData(..){ 



//get data call the above function to get particular data 

} 

をCRUD-INGのあなたはそれぞれの新しいコントローラが延長するという方法の異なるコントローラに分離したいと思います既存のClientControllerはCRUDをプリフォームしてブリッジを必要としません。他のすべてのコントローラは、ClientControllerメソッドを使用します。

+0

コントローラで例を挙げることはできますか?すべてのエンドポイントが異なるプロパティを持つため、同じではありません。 – yigitozmen

関連する問題