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。他们是一样的吗?有重叠吗?的主要内容,如果未能解决你的问题,请参考以下文章