【问题标题】:Odd Laravel apiResource routes issue奇怪的 Laravel apiResource 路由问题
【发布时间】:2020-01-29 12:07:10
【问题描述】:

我的 show 函数在 apiResource 中的路由不起作用,但如果我重载路由并指向该函数,它会按预期工作。

资源路由确实有用

Route::apiResource('/delivery_handler/chat/','CartDeliveryListChatController');

工作路线

Route::get('/delivery_handler/chat/{id?}', function ($id) {
        return (new App\Http\Controllers\Api\CartDeliveryListChatController)->show($id);
    });

在我的控制器中

    /**
     * @param $chatId
     * @return CartDeliveryListChatResource
     */
    public function show($chatId): CartDeliveryListChatResource
    {
        $data = CartDeliveryListChat::where('id',$chatId)->first();
        return new CartDeliveryListChatResource($data);
    }

路线列表

  | GET|HEAD  | api/v1/delivery_handler/chat/{id?}                  |                                   | Closure                                                                             | api          |
|        | GET|HEAD  | api/v1/delivery_handler/chat/{}                     | show                              | App\Http\Controllers\Api\CartDeliveryListChatController@show                        | api          |

【问题讨论】:

  • 我认为这是一个命名空间问题,当您在第一个代码示例中指定命名空间时会发生什么?你有没有看到任何错误。你能具体说明你看到什么不工作

标签: api laravel-5 routes


【解决方案1】:

好的,我认为问题在于命名空间。我认为您缺少资源路由定义中的 API 部分。你的控制器在App\Http\Controllers\Api 目录中,但是如果你只定义CartDeliveryListChatController,Laravel 只会在App\Http\Controllers 目录中查找。

尝试以下方法:

Route::apiResource('/delivery_handler/chat/','Api\CartDeliveryListChatController');

我也不知道你是否可以指定一个路径作为资源方法的第一个参数。我认为它总是必须是一个实体名称(您为其创建资源)。但我不确定。如果还是不行,试试这个:

Route::apiResource('cartdeliverylistchat','Api\CartDeliveryListChatController');

然后路由http://YOURAPPLICATION/cartdeliverylistchat/YOURID

【讨论】:

  • hmmm 试过这个,但仍然没有返回。奇怪的是,除了显示之外的所有其他路由都按预期工作......所以索引、更新、销毁等。这是我大约 1/2 控制器的问题,尽管有些工作正常,尽管它们都遵循相同的模式.作为旁注添加路径有效(只要它不会与不同的路线混淆。)
  • 我想我应该添加所有这些路由已经在一个使用 Api 命名空间的组中,这就是我不需要直接将 api 分配给控制器的原因。 ``` ``` Route::group(['namespace' => 'Api','prefix'=>'v1'], function () { 路由在这里} ```
猜你喜欢
  • 2016-01-14
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
  • 2015-07-10
  • 1970-01-01
  • 2021-10-31
  • 2014-10-23
相关资源
最近更新 更多