From c4d3ccab7172781c8db120c25459be3ac516450f Mon Sep 17 00:00:00 2001
From: PinYi <880831ian@gmail.com>
Date: Mon, 4 Apr 2022 11:20:55 +0800
Subject: [PATCH] v2.0.0
---
README.md | 41 ++++++-------------
.../Http/Controllers/MessageController.php | 31 ++++----------
.../app/Repositories/MessageRepository.php | 2 +-
3 files changed, 20 insertions(+), 54 deletions(-)
diff --git a/README.md b/README.md
index 21c7a2b..cbe7d9d 100644
--- a/README.md
+++ b/README.md
@@ -176,7 +176,7 @@ Middleware created successfully.
-##### Route
+#### Route
接下來,我們要把我們設定好的 `ApiAuth` 設定在 `route\api.php` 的路由中,
```php
@@ -191,7 +191,7 @@ Route::delete('message/{id}', 'MessageController@delete')->middleware('api.auth'
-##### Model
+#### Model
因為我們在取得資料時,不希望顯示 `deleted_at` 給使用者,所以在 `app\Models\Message.php` 這個 model 裡面用 `hidden` 來做設定。
@@ -244,7 +244,7 @@ class Like extends Model
-##### Repository
+#### Repository
還記得我們上次把 RESTful API 要處理的邏輯都寫在 Controller 裡面嗎,我們光是一個小功能就讓整個 Controller 變得肥大,在後續維護時或是新增功能時,會導致十分不便利,因此我們要將 Repository 設計模式 給導入,那要怎麼實作呢~
@@ -300,7 +300,7 @@ use App\Models\Like;
->groupBy('id')
->get()
->where('id', $id)
- ->toArray();
+ ->first();
}
```
回傳全部的留言資料 `getAllMessage()`,由於我們想要顯示留言者 id,只能一個一個把我們想要的 select 出來,不能透過 model 來顯示,使用 leftjoin 來查詢,最後多一個來顯示各個文章的總數。
@@ -373,7 +373,7 @@ use App\Models\Like;
-##### Controller
+#### Controller
到這裡我們講完 `MessageRepository.php` 的內容了,那原本的 Controller 剩下什麼呢 !?
@@ -424,10 +424,10 @@ use Illuminate\Support\Facades\Validator;
{
$user = Auth::user();
- $rules = ['content' => 'max:20'];
+ $rules = ['content' => 'required|max:20'];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
- return response()->json(["message" => "內容長度超過20個字元"], 400);
+ return response()->json(["message" => "沒有輸入內容或長度超過20個字元"], 400);
}
MessageRepository::createMessage($user->id, $request->content);
@@ -451,22 +451,15 @@ use Illuminate\Support\Facades\Validator;
return response()->json(["message" => "找不到留言"], 404);
}
- $rules = ['content' => 'max:20'];
+ $rules = ['content' => 'required|max:20'];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
- return response()->json(["message" => "內容長度超過20個字元"], 400);
- }
-
- foreach ($message as $key => $value) {
- $user_id = $value['user_id'];
- $version = $value['version'];
+ return response()->json(["message" => "沒有輸入內容或長度超過20個字元"], 400);
}
- if ($user_id != $user->id) {
- return response()->json(["message" => "權限不正確"], 403);
+ if (!MessageRepository::updateMessage($id, $user->id, $request->content, $message['version'])) {
+ return response()->json(["message" => "更新留言失敗"], 400);
}
-
- MessageRepository::updateMessage($id, $user->id, $request->content, $version);
return response()->json(["message" => "修改成功"], 200);
}
```
@@ -503,19 +496,9 @@ use Illuminate\Support\Facades\Validator;
{
$user = Auth::user();
- if (!$message = MessageRepository::getMessage($id)) {
+ if (!MessageRepository::deleteMessage($id, $user->id)) {
return response()->json(["message" => "找不到留言"], 404);
}
-
- foreach ($message as $key => $value) {
- $user_id = $value['user_id'];
- }
-
- if ($user_id != $user->id) {
- return response()->json(["message" => "權限不正確"], 403);
- }
-
- MessageRepository::deleteMessage($id, $user->id);
return response()->json(["message" => "刪除成功,沒有返回任何內容"], 204);
}
```
diff --git a/message_board/app/Http/Controllers/MessageController.php b/message_board/app/Http/Controllers/MessageController.php
index c2efc1d..83745d4 100644
--- a/message_board/app/Http/Controllers/MessageController.php
+++ b/message_board/app/Http/Controllers/MessageController.php
@@ -29,10 +29,10 @@ public function create(Request $request)
{
$user = Auth::user();
- $rules = ['content' => 'max:20'];
+ $rules = ['content' => 'required|max:20'];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
- return response()->json(["message" => "內容長度超過20個字元"], 400);
+ return response()->json(["message" => "沒有輸入內容或長度超過20個字元"], 400);
}
MessageRepository::createMessage($user->id, $request->content);
@@ -48,22 +48,15 @@ public function update(Request $request, $id)
return response()->json(["message" => "找不到留言"], 404);
}
- $rules = ['content' => 'max:20'];
+ $rules = ['content' => 'required|max:20'];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
- return response()->json(["message" => "內容長度超過20個字元"], 400);
+ return response()->json(["message" => "沒有輸入內容或長度超過20個字元"], 400);
}
- foreach ($message as $key => $value) {
- $user_id = $value['user_id'];
- $version = $value['version'];
+ if (!MessageRepository::updateMessage($id, $user->id, $request->content, $message['version'])) {
+ return response()->json(["message" => "更新留言失敗"], 400);
}
-
- if ($user_id != $user->id) {
- return response()->json(["message" => "權限不正確"], 403);
- }
-
- MessageRepository::updateMessage($id, $user->id, $request->content, $version);
return response()->json(["message" => "修改成功"], 200);
}
@@ -85,19 +78,9 @@ public function delete($id)
{
$user = Auth::user();
- if (!$message = MessageRepository::getMessage($id)) {
+ if (!MessageRepository::deleteMessage($id, $user->id)) {
return response()->json(["message" => "找不到留言"], 404);
}
-
- foreach ($message as $key => $value) {
- $user_id = $value['user_id'];
- }
-
- if ($user_id != $user->id) {
- return response()->json(["message" => "權限不正確"], 403);
- }
-
- MessageRepository::deleteMessage($id, $user->id);
return response()->json(["message" => "刪除成功,沒有返回任何內容"], 204);
}
}
diff --git a/message_board/app/Repositories/MessageRepository.php b/message_board/app/Repositories/MessageRepository.php
index 1bf3127..3f99535 100644
--- a/message_board/app/Repositories/MessageRepository.php
+++ b/message_board/app/Repositories/MessageRepository.php
@@ -41,7 +41,7 @@ public static function getMessage($id)
->groupBy('id')
->get()
->where('id', $id)
- ->toArray();
+ ->first();
}
public static function createMessage($id, $content)