Laravel 中的三种不同方法用于请求是不是请求 JSON。他们是一样的吗?有重叠吗?

Posted

技术标签:

【中文标题】Laravel 中的三种不同方法用于请求是不是请求 JSON。他们是一样的吗?有重叠吗?【英文标题】:Three different methods in Laravel for if the request is asking for JSON. Are they the same? Do any overlap?Laravel 中的三种不同方法用于请求是否请求 JSON。他们是一样的吗?有重叠吗? 【发布时间】:2017-06-30 21:59:35 【问题描述】:

所以这三种方法在 Laravel 文档中用于测试请求是否为 JSON。

我基本上想为任何请求 JSON 或 AJAX 的请求返回 JSON。

Request::ajax() Request::isJson() Request::wantsJson()

我可以使用其中任何一种吗?它们重叠吗?

【问题讨论】:

【参考方案1】:

并非所有 AJAX 请求都需要 JSON 响应,因此在您想确定请求是否为 XmlHttpRequest 时使用 request()->ajax() 非常有用,但响应并不关心 JSON。

并非所有包含 JSON 的请求都需要 JSON 响应。因此,如果您不关心响应是否需要返回 JSON,但想确定请求中是否发送了 JSON,那么isJson() 对您很有用。

并非所有需要 JSON 响应的请求都是 AJAX 驱动的,因此 wantsJson 在您想要返回 JSON 数据的情况下很有用,但您并不关心请求是如何到达您的服务器的。

根据这些描述,做出断言并选择合适的函数。

【讨论】:

太棒了。谢谢你。这就是我想知道的。所以每一个都有自己的用例并且存在是有原因的。【参考方案2】:

您可以使用Request::expectsJson()。如果请求是 ajax 或想要 json,则返回 true。

【讨论】:

【参考方案3】:
    如果您想检查请求是否只是 Ajax

    request()->ajax() 很有用

    Request::wantsJson() 如果你想检查请求是否只是 Json

    很有用

    Request::expectsJson() 如果您想检查请求是 Ajax 还是 Wants Json

    ,这很有用

【讨论】:

以上是关于Laravel 中的三种不同方法用于请求是不是请求 JSON。他们是一样的吗?有重叠吗?的主要内容,如果未能解决你的问题,请参考以下文章

post 变成option 请求的三种原因

OPTIONS 方法在跨域请求(CORS)中的应用

struts请求参数注入的三种方式

实现ViewPager懒加载的三种方法

SpringMVC的请求转发的三种方法

Laravel - 检查 Ajax 是不是请求