【问题标题】:Route::delete in Laravel is not catching Request $requestLaravel 中的 Route::delete 没有捕获 Request $request
【发布时间】:2016-10-07 20:08:38
【问题描述】:

这个网址 http://localhost:8888/api/v1/apartments/delete ,我正在尝试删除一个确定的公寓而不通过 URL 传递 id。我正在使用 POSTMAN 发送数据,但我无法使用 Request 或 Input 类捕获它。

Routes.php

Route::delete('/api/v1/apartments/delete', 'ApartmentApiController@destroy');

ApartmentApiController

public function destroy(Request $request)
{
  dd($request->all());
}

在 UPDATE Request 等方法中有效,但在 DELETE 中无效。为什么是这样?我有点好奇,我还没有找到。

像这样删除在 URL 中传递项目 id 是一个好习惯吗?我应该这样做吗? http://localhost:8888/api/v1/apartments/delete/13

【问题讨论】:

  • 最好的做法不仅是在删除时在 URL 中包含 id(当您删除错误的内容时更容易从日志中找到发生的情况),而且在删除时需要某种形式的确认任何数据库对象(它可以防止通过 XSS 删除项目)。
  • 只是一个旁注,我遇到了邮递员和 Laravel 的问题;通过实际的 post 路由发送数据是可行的,但使用 postman 执行 post 请求则不行。最终不得不切换到不同的 REST 客户端;可能您也遇到过这种情况,但很难确定。
  • @grochmal 这一切都由 JWT 保护,但感谢您的建议。

标签: php api laravel routes httpverbs


【解决方案1】:

由于您在路线中传递了id:

Route::delete('apartments/delete/{id}', 'ApartmentApiController@destroy');

您需要将其与 Request 对象一起注入您的方法中。

public function destroy($id, Request $request)
{
  dd($id);
}

【讨论】:

    【解决方案2】:

    刚刚遇到同样的问题。我发现我必须将标题从Accept: application/json更改为content-type: application/json...

    【讨论】:

      猜你喜欢
      • 2022-06-15
      • 2020-09-03
      • 1970-01-01
      • 2021-01-03
      • 2017-04-10
      • 2017-08-08
      • 2017-12-14
      • 2019-12-19
      • 2021-08-10
      相关资源
      最近更新 更多