2016-05-23 93 views
0

我在Laravel應用一些路由(多路徑)Laravel:根據一個路由前綴

我要添加新的功能,以返回JSON格式的所有數據響應格式。現在數據只是意見。

/ROUTE1 /選項 /路徑2 /選項

我想有

/JSON/ROUTE1 /選項 /JSON /路徑2 /選項

所以,如果任何我現有的路由獲取前綴/ json然後數據應該返回與JSON。

我的路線看起來像正常的航線Laravel

Route::get('user/{id}', function($id) { 

    $user = .... 
    return view('userprofile', $user); 
}); 

如何改變這種要知道,JSON格式的請求? 它應該是單獨的路由組,其中每個路由被再次描述?

回答

0

在我眼裏實現,這將是允許客戶選擇他們想要的東西的最佳方式。這通常使用Accept頭來實現。寫入Laravel應用程序時,就好像通過接受頭部被請求JSON請求對象總是被告知

GET myapp.com/user/1 HTTP/1.1 
Accept application/json 

這是一個好方法。

我在以下示例中使用了Laravel 5.2的隱式模型綁定。

Route::get('user/{user}', function(Request $request, User $user) { 

    if ($request->wantsJson()) { 
     return response()->json($user); 
    } 

    return view('userProfile', $user); 
}); 

這種方法避免了不必要的投入在信息的URL保持你的API乾淨。然而,許多下線(包括我自己)的路線是將返回數據的路線和返回視圖的路線分開。

Route::get('user/{user}', function(Request $request, User $user) { 
    // Standard route, return a view 
}); 

Route::get('api/user/{user}', function(Request $request, User $user) { 
    // API route, always return JSON 
}); 
0

假設Laravel 5.2:

​​

Route::get('user/{id}/{format?}', function($id, $format = null) { 

    $user = .... 

    if($format == 'json') { 
     return response()->json($user); 
    } 

    return view('userprofile', $user); 
});