首页 > 解决方案 > 在 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 请求时接收令牌。在身份验证方面,我试图了解客户端和服务器端代码,因为我不希望我的应用程序给用户带来任何安全问题。

标签: javascriptphpajax

解决方案


这完全取决于您如何处理返回的信息!

如果您不想对返回的信息做任何其他事情,那么您可以纯粹将其显示给最终用户。但是,如果您想缓存结果,或者对请求或请求的结果进行一些分析,例如用户使用情况等,那么后端 PHP 将有助于实现这一点。

还有一个问题是,使用直接 API 调用,客户端的网络将用于获取结果,而不是使用 PHP 调用的托管服务器。除此之外,为了从 PHP 脚本获取信息(客户端调用 PHP 脚本,PHP 脚本调用 API,PHP 脚本将结果返回给客户端),还需要额外的跳转。


推荐阅读