通常你不会在路由中传递用户标识,除非在控制器中有某种认证。例如。管理员正在更新用户。而是使用控制器中的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