Laravel的REST API订阅和交易(付款)端点
我正在开发一个web应用程序,并观察REST API标准。我正在寻找订阅和付款的REST API最佳实践。Laravel的REST API订阅和交易(付款)端点
当新用户订阅“专业计划”时,用户应该为计划付钱,这是一笔交易。
当新用户订阅时,我应该设置POST:users/{id}/subscriptions
和[email protected]
吗?
由于订阅是一个交易和两个分开的请求(银行之前/之后),所有的订阅代码应该在[email protected]
?
对于升级,取消或更新计划,我应该设置PUT:users/{id}/subscriptions/{id}
和[email protected]
或其他端点吗?
通常你不会在路由中传递用户标识,除非在控制器中有某种认证。例如。管理员正在更新用户。而是使用控制器中的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)
我在我的控制器中使用auth() - > user()。但我也得到路由中的用户标识,并将其用于策略。我认为它更友好! – ivahidmontazer
我想了解你所要求的,但对我来说这有点模糊,所以如果我得到了正确的结果,你试图找出API端点命名的最佳实践是什么,它实际上取决于你的功能将提供以及如何公开文档。
但是从我的观点,我不明白了一个道理,以在网址链接的用户ID和用户ID,我建议这样的事情,你可以通过你的身体
$router->post('settings/user/plan', 'Settings\[email protected]');
$router->put('settings/user/plan', 'Settings\[email protected]');
$router->delete('settings/user/plan', 'Settings\[email protected]');
$router->post('settings/user/plan/resume', 'Settings\[email protected]');
$router->put('settings/user/card', 'Settings\[email protected]');
$router->put('settings/user/vat', 'Settings\[email protected]');
$router->get('settings/user/plan/invoice/{id}', 'Settings\[email protected]');
想要的信息这真的取决于你如何定义你的端点
如果您尝试为布伦特里或条纹这两种付款网关th容易粗糙的主要计划和订阅。
主要作用: -
- 少编码申购布伦特里树下拉式UI其reponsive计划
- UI准备
- 轻松附加附加费
不幸的是,我不使用braintree或条纹。 – ivahidmontazer
可能重复的[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