我已经开始创建一个 RESTful API(好吧,我已经尽力了,我正在尝试遵循这些模式)并且我偶然发现了一个我不确定如何处理的场景。我将解释当前的结构:
我的应用程序有 4 个控制器:
顾客
付款
日志
以客户控制器为例,我定义了以下操作:
GET /customers:返回客户列表
POST /customers:创建一个新客户
GET /customers/{id}:返回具有提供的 id 的客户
PUT /customers/{id}:使用提供的 id 更新客户
DELETE /customers/{id}:销毁客户
这是客户控制器的完整代码:
namespace App\Http\Controllers;
use App\Customer;
use Illuminate\Http\Request;
class CustomerController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return Customer::all();
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$customer = Customer::create($request->all());
return response()->json($customer, 201);
}
/**
* Display the specified resource.
*
* @param \App\Customer $customer
* @return \Illuminate\Http\Response
*/
public function show(Customer $customer)
{
return $customer;
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Customer $customer
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Customer $customer)
{
$customer->update($request->all());
return response()->json($customer, 200);
}
/**
* Remove the specified resource from storage.
*
* @param \App\Customer $customer
* @return \Illuminate\Http\Response
*/
public function destroy(Customer $customer)
{
$customer->delete();
return response()->json(null, 204);
}
}
其他控制器中的代码非常相似。同样重要的是要注意:
一个客户可以有多个付款
一个客户可以在日志中有多个记录
问题从这里开始:
我需要在前端显示一个包含所有客户数据(姓名、电子邮件、注册日期等)的摘要页面和一个显示付款次数的框和另一个显示日志中条目数的框。
我需要提出 3 个请求吗?(一个到/customers/id,另一个到customers/id/payments,另一个到customers/id/logs)
如果我在 customers/id 调用中返回所有与客户相关的数据,我是否违反了 RESTful 约定?
牛魔王的故事
慕田峪4524236