質問編集履歴

5

修正

2020/09/17 13:13

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- API Resourcesで「追加した値」と「ステータスコード」をレスポンスに含めたい
1
+ API Resourcesで「レコードに追加した値」と「ステータスコード」をレスポンスに含めたい
test CHANGED
@@ -1,301 +1,3 @@
1
1
  入力フォームから送信して「追加した値」と「レスポンスステータスコード」をレスポンスに含める方法を教えてください。
2
2
 
3
3
  レスポンスステータスコードは201とし、追加したレコードのみをレスポンスします。
4
-
5
- また、関数名も自信ありません。改善していただけるとありがたいです。
6
-
7
-
8
-
9
- Model
10
-
11
- ```PHP
12
-
13
- <?php
14
-
15
- namespace App\Models;
16
-
17
- use Illuminate\Database\Eloquent\Factories\HasFactory;
18
-
19
- use Illuminate\Database\Eloquent\Model;
20
-
21
- class Todo extends Model
22
-
23
- {
24
-
25
- use HasFactory;
26
-
27
- protected $fillable = ['body'];
28
-
29
- }
30
-
31
- ```
32
-
33
- Repository
34
-
35
- ```PHP
36
-
37
- <?php
38
-
39
- namespace App\Repositories;
40
-
41
- use App\Models\Todo;
42
-
43
- class TodoRepository
44
-
45
- {
46
-
47
- public function getList()
48
-
49
- {
50
-
51
- return Todo::orderBy('updated_at', 'desc')->get();
52
-
53
- }
54
-
55
-
56
-
57
- public function getTodo($id)
58
-
59
- {
60
-
61
- return Todo::find($id);
62
-
63
- }
64
-
65
-
66
-
67
- public function storeTodo($requestAll)
68
-
69
- {
70
-
71
- Todo::create($requestAll);
72
-
73
- }
74
-
75
- }
76
-
77
- ```
78
-
79
- Service
80
-
81
- ```PHP
82
-
83
- <?php
84
-
85
- namespace App\Services\API;
86
-
87
- use App\Repositories\TodoRepository;
88
-
89
- class TodoService
90
-
91
- {
92
-
93
- private $repository;
94
-
95
- public function __construct(TodoRepository $repository)
96
-
97
- {
98
-
99
- $this->repository = $repository;
100
-
101
- }
102
-
103
-
104
-
105
- public function getList()
106
-
107
- {
108
-
109
- return $this->repository->getList();
110
-
111
- }
112
-
113
-
114
-
115
- public function getTodo($id)
116
-
117
- {
118
-
119
- return $this->repository->getTodo($id);
120
-
121
- }
122
-
123
-
124
-
125
- public function storeTodo($requestAll)
126
-
127
- {
128
-
129
- $this->repository->storeTodo($requestAll);
130
-
131
- }
132
-
133
- }
134
-
135
- ```
136
-
137
- Controller
138
-
139
- ```PHP
140
-
141
- <?php
142
-
143
- namespace App\Http\Controllers\API;
144
-
145
- use Illuminate\Http\Request;
146
-
147
- use App\Http\Requests\TodoRequest;
148
-
149
- use App\Services\API\TodoService;
150
-
151
- use App\Http\Resources\TodoCollection;
152
-
153
- use App\Http\Resources\Todo as TodoResource;
154
-
155
- class TodoController
156
-
157
- {
158
-
159
- private $service;
160
-
161
- public function __construct(TodoService $service)
162
-
163
- {
164
-
165
- $this->service = $service;
166
-
167
- }
168
-
169
-
170
-
171
- public function getList()
172
-
173
- {
174
-
175
- return new TodoCollection($this->service->getList());
176
-
177
- }
178
-
179
-
180
-
181
- public function getTodo($id)
182
-
183
- {
184
-
185
- return new TodoResource($this->service->getTodo($id));
186
-
187
- }
188
-
189
-
190
-
191
- public function storeTodo(TodoRequest $request)
192
-
193
- {
194
-
195
- $this->service->storeTodo($request->all());
196
-
197
- /* $responseBody = $this->service->getList(); これだと全てのデータが返ってきてしまします。
198
-
199
- return response($responseBody, 201);     追加したレコードのみをレスポンスしたいです。
200
-
201
-                              Eloquent API Resources を使う必要があります。
202
-
203
- */
204
-
205
- }
206
-
207
- }
208
-
209
- ```
210
-
211
- Resources
212
-
213
- ```PHP
214
-
215
- <?php
216
-
217
- namespace App\Http\Resources;
218
-
219
- use Illuminate\Http\Resources\Json\JsonResource;
220
-
221
- class Todo extends JsonResource
222
-
223
- {
224
-
225
- public function toArray($request)
226
-
227
- {
228
-
229
- return [
230
-
231
- 'id' => $this->id,
232
-
233
- 'body' => $this->body,
234
-
235
- 'created_at' => $this->created_at,
236
-
237
- 'updated_at' => $this->updated_at,
238
-
239
- ];
240
-
241
- }
242
-
243
- }
244
-
245
- ```
246
-
247
- ResourceCollection
248
-
249
- ```PHP
250
-
251
- <?php
252
-
253
- namespace App\Http\Resources;
254
-
255
- use Illuminate\Http\Resources\Json\ResourceCollection;
256
-
257
- class TodoCollection extends ResourceCollection
258
-
259
- {
260
-
261
- public function toArray($request)
262
-
263
- {
264
-
265
- return [
266
-
267
- 'data' => $this->collection,
268
-
269
- 'links' => [
270
-
271
- 'url' => $request->url()
272
-
273
- ]
274
-
275
- ];
276
-
277
- }
278
-
279
- }
280
-
281
- ```
282
-
283
- api.php
284
-
285
- ```PHP
286
-
287
- <?php
288
-
289
- use Illuminate\Http\Request;
290
-
291
- use Illuminate\Support\Facades\Route;
292
-
293
- use App\Http\Controllers\API\TodoController;
294
-
295
- Route::get('/todo', [TodoController::class, 'getList']);
296
-
297
- Route::get('/todo/{id}', [TodoController::class, 'getTodo']);
298
-
299
- Route::post('/todo', [TodoController::class, 'storeTodo']);
300
-
301
- ```

4

文章の修正

2020/09/17 13:13

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,6 @@
1
- LaravelでTODOリストのapiを作成しています。
2
-
3
- 入力フォームから送信して追加した値レスポンスステータスコードと共にレスポンスに含める方法を教えてください。
1
+ 入力フォームから送信して追加した値」と「レスポンスステータスコード」をレスポンスに含める方法を教えてください。
4
-
2
+
5
- レスポンスステータスコードは201とし、追加したレコードのみを返す必要があります。
3
+ レスポンスステータスコードは201とし、追加したレコードのみをレスポンスします。
6
4
 
7
5
  また、関数名も自信ありません。改善していただけるとありがたいです。
8
6
 

3

タイトル修正

2020/09/17 13:02

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- 追加した値をAPI Resourcesを用いてJSON返却する方法等教えてくださ
1
+ API Resourcesで「追加した値」と「ステータスコード」レスポンスに含めた
test CHANGED
File without changes

2

文章の修正

2020/09/17 12:59

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -4,16 +4,10 @@
4
4
 
5
5
  レスポンスステータスコードは201とし、追加したレコードのみを返す必要があります。
6
6
 
7
-
8
-
9
7
  また、関数名も自信ありません。改善していただけるとありがたいです。
10
8
 
11
9
 
12
10
 
13
- その他、おかしな点、改善したほうが良いと思われる点がありましたら、ご指導よろしくお願い致します。
14
-
15
-
16
-
17
11
  Model
18
12
 
19
13
  ```PHP

1

誤字

2020/09/17 12:25

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -80,26 +80,6 @@
80
80
 
81
81
  }
82
82
 
83
-
84
-
85
- public function updateTodo($requestAll, $id)
86
-
87
- {
88
-
89
- Todo::find($id)->update($requestAll);
90
-
91
- }
92
-
93
-
94
-
95
- public function destroyTodo($id)
96
-
97
- {
98
-
99
- Todo::find($id)->delete();
100
-
101
- }
102
-
103
83
  }
104
84
 
105
85
  ```