通常你不會在路由中傳遞用戶標識,除非在控制器中有某種認證。例如。管理員正在更新用戶。而是使用控制器中的Auth::user()
對象。
關於你的問題,有很多選擇,這完全取決於你,但一個可能的方法是使用resource route\controller。
Route::resource('user/subscription', 'User\SubscriptionController');
然後控制器會是這個樣子:
<?php
namespace App\Http\Controllers\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class SubscriptionController extends Controller
{
public function index()
{
// get user
$user = Auth::user();
// list all user subscriptions
}
public function store(Request $request)
{
// get user
$user = Auth::user();
if(empty($user)) {
// create user
}
// create and process subscription for the user
// possibly using a plan id in the $request
}
public function show($id)
{
// get user
$user = Auth::user();
// return user subscription details for $id
}
public function update(Request $request, $id)
{
// get user
$user = Auth::user();
// update or change user subscription
// possibly using a plan id in the $request
}
public function destroy($id)
{
// get user
$user = Auth::user();
// cancel user subscription with $id
}
}
和你的路線是這樣的:
GET
user/subscription
列表中的所有用戶訂閱index()
POST
user/subscription
創建一個用戶訂閱store(Request $request)
GET
user/subscription/{subscription_id}
顯示用戶訂閱show($id)
PUT/PATCH
user/subscription/{subscription_id}
更新用戶訂閱update($id)
DELETE
user/subscription/{subscription_id}
取消用戶訂閱destroy($id)
可能重複的[REST API - PUT vs PATCH與現實生活中的例子](http://stackoverflow.com/questions/28459418/rest-api-put-vs-patch-with-real-life-examples)。你的所有問題都在這個評論中得到了回答,並進行了全面的介請閱讀。 – Ohgodwhy
@Ohgodwhy我讀了很多關於REST API的內容。我找不到我的答案。在這些答案中,對於我的問題還沒有確定的和最佳的實踐。如果你有答案,請回答。 – ivahidmontazer
你是什麼意思,「因爲訂閱是一個交易和兩個分開的請求(銀行之前/之後)」。它不夠清楚。 – Gayan