[英]How To Return a Http Response Status Code in Laravel response()->download()?
[英]How to return HTTP status code when returning a ResourceCollection in Laravel
我正在構建一個 API,我正在嘗試為 Laravel 中的教室返回一個 ResourceCollection。
以前我使用了一個教室數組,並返回了一個包含數組和狀態代碼的響應,如下所示:
$classrooms=Classroom::all();
return response()->json($classrooms,200);
現在這是我的代碼:
$classrooms = new ClassroomCollection(Classroom::paginate(10));
return $classrooms;
得到這個回應:
"data": [classrooms array],
"links": {
"first": "http://127.0.0.1:8000/api/classrooms ?page=1",
"last": "http://127.0.0.1:8000/api/classrooms ?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": null,
"last_page": 12,
"path": "http://127.0.0.1:8000/api/classrooms ",
"per_page": 10,
"to": null,
"total": 0
}
而且我找不到將狀態代碼與 ClassroomCollection 一起發送的方法,因為如果我這樣做了
return response()->json($classrooms,200);
我只返回了“數據”對象,沒有分頁器的鏈接和元數據。
有什么幫助嗎?
您可以像這樣覆蓋集合中的 withResponse 函數:
public function withResponse($request, $response)
{
if($response->getData()) {
$response->setStatusCode(200);
} else{
$response->setStatusCode(404);
}
parent::withResponse($request, $response);
}
如果你真的想要,你可以執行以下操作:
return response()->json($classrooms->jsonSerialize(), 200);
->jsonSerialize()
實際上並不序列化為 JSON 字符串,而是返回一個可以序列化為 JSON 字符串的數組。 如果您從控制器/路由返回一個數組或JsonSerializable
對象,那么 Laravel 將序列化為 JSON 響應,而這正是分頁器實現的。
但是,如果200是您想要的狀態代碼,則這是隱含的默認狀態代碼,無需提供。
所以上面的等價於:
return $classrooms;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.