これは、コントローラのコードとロジックによって異なります。ほとんどの場合、あなたのコントローラーは視界を退屈させています。たとえば、return view('aaron-board')
です。 しかし、RESTfulなAPIには、return response()->json(['data' => 'users'])
のようなJSON応答が必要です。
従来のWebアプリケーションを最初から計画していない場合は、それをapiに変換するのは簡単な作業ではありません。しかし、それは実行可能です。
アプリケーションの規模に応じて、APIリクエストを処理する専用のコントローラを用意したり、アプリケーションが小さい場合は現在の/同じコントローラで処理させることができます。もう一つの問題はルーティングです。ミドルウェアweb
は、APIリクエストに問題を引き起こします。
ここで私は出発点として何をしますか。 Webアプリケーションの通常のリクエストと同様に、私のコントローラをAPIリクエストに応答するように調整します。
たとえば、我々は次のルートを持っているとしましょう:
// web.php
Route::get('/users', '[email protected]');
そして、Googleのインデックス方法:
public function index(Request $request)
{
$users = App\User::paginate();
return view('users.index', compact('users');
}
私たちは、基本的に来て、要求場合JSONレスポンスを返すようにindex
方法を変更することができます次のようなAPIリクエストです:
public function index(Request $request)
{
$users = App\User::paginate();
if ($request->wantsJson()) {
return response()->json(['data' => $users]);
}
return view('users.index', compact('users');
}
今すぐ私たちは同じルートをapi.php
ファイルに複製します。 (返されます
www.example.com/api/usersを(ビューを返します)
- www.example.com/users:
// api.php
Route::get('/users', '[email protected]');
これが私たちのアプリケーション二つの経路を与えますJSONレスポンス)JSONレスポンスを取得するためのAPI要求を適切なヘッダーを設定することが重要
注 I'is。すなわちAccept: application/json
。 CORSの設定にも注意してください。
web.php
ファイルのルートにweb
ミドルウェアを追加しています。これは問題ありませんが、不要です。ミドルウェアはすでにRouteServiceProvider
によって追加されており、方法mapWebRoutes
をthis fileにチェックしてください。 mapApiRoutes()
は、api.php
ファイルに定義されているすべてのルートにapiミドルウェアを追加することもわかります。
あなたの 'web'ルートはHTMLを正しく返しますか?そして、この解消されたデータをJSON APIに変換する1-answerソリューションが必要ですか? –