mmm10
@mmm10

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Laravel Web apiのGETリクエストで値が返ってこない

解決したいこと

LaravelでWebapiを作成するため、make:controller(--apiオプション)でコントローラを作成しました。
CRUD操作をしたいのですが、Readからうまくいっていません。
(2)の問題について解決方法を教えて下さい。
現状は以下です。
(1) 以下のURLでGETリクエストを送信すると、全テーブルデータは返ってくる

http://localhost/api/webapi

発生している問題・エラー

(2) 以下のURLでIDを指定してGETリクエストを送信すると、

http://localhost/api/webapi/1

以下のように、データ無となる。(データベースには5つレコードが入っており、IDが自動で振られている)

{
  "webapi_controllers":[]
}

初めてコントローラを作成し、どのソースコードを確認するのが良いかさえわかりません。ご助言お願いします。

自分で試したこと

Serviceファイルのquery()関数を確認したが、例となるファイルと中身は同様。
Resourceファイルには特に何も設定していない。
Routeの紐づけはRoute:resource()で紐づけできていることを確認済み

0

1Answer

php artisan route:list コマンドでルーティングテーブルを表示し、
該当のルートがどのコントローラーのどのメソッドが対象かを確かめ、
そのメソッド内でデバッグを行ってみましょう。

1Like

Comments

  1. @mmm10

    Questioner

    回答ありがとうございます。ルーティングテーブルは以下です。
    ```
    | | POST | api/webapi | webapi .store | App\Http\Controllers\webapi Controller@store | api |
    | | GET|HEAD | api/webapi | webapi.index | App\Http\Controllers\webapi @index | api |
    | | DELETE | api/webapi/{webapi} | webapi.destroy | App\Http\Controllers\webapiController@destroy | api |
    | | PUT|PATCH | api/webapi/{webapi} | webapi.update | App\Http\Controllers\webapiController@update | api |
    | | GET|HEAD | api/webapi/{webapi} | webapi.show | App\Http\Controllers\webapiController@show | api
    ```
    メソッドはGETなので、index()かと思っていましたが、URL最後に{/id}を入力しているので、show()という事になるのでしょうか?

    以下の関数のまま、idで情報を絞ってreturnしたいのですが、Serviceファイル内のqueryが間違っているのでしょうか。ご助言頂けましたら助かります。
    コントローラファイル
    public function show(webapiService$service, webapi$webapi)
    {
    return new webapiResource($webapi);
    }


    リソースファイル_webapiResource
    public function toArray($request)
    {
    return parent::toArray($request);
    }

Your answer might help someone💌