【问题标题】:Postman and laravel delete apiPostman 和 laravel 删除 api
【发布时间】:2019-06-13 11:10:21
【问题描述】:

我正在尝试制作 laravel api,获取请求一切正常,但是当我使用删除请求时,它显示了这个

请帮忙,我该怎么办。

这是在我的 web.php 中,

Route::delete('article/{id}','ArticleController@destroy');

在 ArticleController 中

public function destroy($id)
{
    $article=Article::FindOrFail($id);
    if($article->delete()){
        return new ArticleResources($article);
    }
}

【问题讨论】:

  • 邮递员没有传递任何东西
  • 我应该为 laravel 删除路由传递什么?
  • 你能提供你的删除api代码吗?
  • 好的,我正在编辑我的问题并添加它。

标签: laravel api postman


【解决方案1】:

除了@joakim-lien 的回答,你在使用 Postman 时还会遇到另一个问题。

HTML 表单不支持 PUT、PATCH 或 DELETE 操作。那么,当 定义从 HTML 调用的 PUT、PATCH 或 DELETE 路由 表单,您需要在表单中添加一个隐藏的 _method 字段。这 使用 _method 字段发送的值将用作 HTTP 请求 方法

来源:Form Method Spoofing - Laravel docs

这仅与 HTML 表单和 Postman 请求有关,因此,如果要发出 DELETE 请求,则需要执行 POST 请求并添加“_method”字段设置为“DELETE”

【讨论】:

  • 好吧,您可以通过邮递员轻松使用 x-www-form-urlencoded 来解决该问题,或者当您 curl 设置标题时 application/x-www-form-urlencoded 问题已解决..
【解决方案2】:

API 路由应该放在 api.php 而不是 web.php

在 web.php 中放置 API 路由的问题在于,这些路由使用了包含 CSRF 保护等内容的 Web 中间件。

您的邮递员图像并没有真正帮助,但我可以看到您得到“页面过期”标题,我认为问题是 CSRF。

所以解决这个问题最简单的方法就是将你的 API 路由放在 api.php 中。
此处的路由以 'api/' 为前缀,因此在这种情况下,新的 url 将类似于:

DELETE | http://127.0.0.1:8000/api/article/2

【讨论】:

    猜你喜欢
    • 2019-07-31
    • 2022-06-24
    • 2017-05-17
    • 2018-10-19
    • 2021-11-28
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 2019-09-20
    相关资源
    最近更新 更多