javascript - 在 AJAX 请求中调用 PHP 文件是否有好处,就像直接端点一样?
问题描述
我正在编写一个通过 AJAX 请求与 Spotify Web API 交互的应用程序。
我可以通过两种方式做到这一点。我可以对 Spotify 端点使用直接(HTTPS?)GET 或 POST 请求,如下所示:
$.ajax({
url: `https://api.spotify.com/v1/search?q=track:hysteria&type=track`,
method: "GET",
async: true,
success: function(successData){
console.log(successData);
}
});
或者我可以使用 php 包装器调用 .php 文件与 Spotify 进行通信:
query="hysteria";
$.ajax({
url: 'getSong.php',
type: 'POST',
data: {data:query},
async: true,
success: function(successData) {
console.log(JSON.Parse(successData))
}
})
获取歌曲.php
<?php
session_start();
require '../vendor/autoload.php';
//Create new spotify session and take accesstoken from session.
$api = new SpotifyWebAPI\SpotifyWebAPI();
$accessToken = $_SESSION["accessToken"];
$api->setAccessToken($accessToken);
$query=$_POST['data'];
$results = $api->search($query, 'track');
echo json.encode($results)
?>
我知道 PHP 方法需要更多代码行并使用供应商来访问 Spotify PHP 包装器。从我的示例中,您可以看到直接 HTTPS 方法更直接。
我想知道的是,使用 PHP 包装器进行 API 操作(例如此示例)是否有任何安全优势。为什么使用它们而不是简单的 AJAX 请求?
对于更复杂的请求,我总是需要向 Spotify 进行身份验证并在使用直接 HTTP 请求时接收令牌。在身份验证方面,我试图了解客户端和服务器端代码,因为我不希望我的应用程序给用户带来任何安全问题。
解决方案
这完全取决于您如何处理返回的信息!
如果您不想对返回的信息做任何其他事情,那么您可以纯粹将其显示给最终用户。但是,如果您想缓存结果,或者对请求或请求的结果进行一些分析,例如用户使用情况等,那么后端 PHP 将有助于实现这一点。
还有一个问题是,使用直接 API 调用,客户端的网络将用于获取结果,而不是使用 PHP 调用的托管服务器。除此之外,为了从 PHP 脚本获取信息(客户端调用 PHP 脚本,PHP 脚本调用 API,PHP 脚本将结果返回给客户端),还需要额外的跳转。
推荐阅读
- angular - 延迟加载模块时生成错误
- reactjs - Firebase存储更改名称时无法移动/上传文件,反应js,redux
- javascript - cypress.io 参数化测试的问题
- java - Jenkins Maven 插件错误“maven-release-plugin:jar:3.8.2 is missing”
- css - CSS:如果隐藏了兄弟元素,如何将元素向右移动?
- node.js - 如何在不使用 $in 的情况下使用 Mongoose 正确查询 MongoDb 混合数据类型字段?
- flutter - buildWhen 在 bloc 中的使用
- wordpress - 类别页面空白,但商店在 WordPress 上的 WooCommerce 上工作
- python - 如何用python中的索引数组替换二维数组的值
- imacros - iMacros 变量转换为 URL