如何通过Ajax API处理多个请求

How to handle multiple requests through an Ajax API?

本文关键字:请求 处理 API 何通过 Ajax      更新时间:2024-06-08

我有一个大型项目,需要通过Ajax调用处理多个函数,到目前为止,我使用不同的文件来处理每个函数调用。我知道必须有更好的方法来处理通过API 的请求

在结构方面,设计这样一个API的标准实践是什么?

谢谢!

它可以是非常简单的东西,也可以是更复杂的东西,你如何编写它取决于你,假设你是唯一一个将使用API的人,据我所知,这类事情没有现成的标准,但解决这类问题的一个好方法是创建一个方便的函数,包括客户端和服务器端,比如

function fetch(what, data) {
    data.what = what;
    return $.ajax({
        url      : '/my/ajaxapi.php',
        data     : data,
        dataType : 'json'
    });
}

当你需要什么的时候,你可以做

fetch('users', {name : 'Bill'}).done(function(result) {
    $('#user').text(result.text);
});
$('.zoidberg').on('click', function() {
    var self = this;
    fetch('zoidberg', {}).done(function(result) {
        $(self).text(result.text);
    });
});

在服务器端,你有一个文件,如何设置它取决于使用的语言,比如PHP,你当然可以喜欢类等,或者只做一个简单的if/else或switch/case

<?php
    $key = $_GET['what']; // wrap in something that makes it safe
    $res = Array();
    switch($key) {
        case 'users' : 
           // lookup in DB or something
           $res['text'] = $username;
        break;
        case 'zoidberg' :
           $res['text'] = " Why Must I Be a Crustacean in Love";
    }
    echo json_encode($res);
?>

这只是一个快速的例子,但设置它使其适合您正在做的事情,它可以为您节省大量工作,而且您将所有东西都放在一个地方,所以以后很容易找到和修改,很容易添加可以使用ajax等获得的新东西,并且可能只需要获取资源、数据库连接等一次,而不是在每个文件中。

以下是我认为您可以做的事情-

与其创建多个文件来处理AJAX请求,不如只创建一个文件,然后为不同类型的操作创建不同的函数。

在AJAX请求中指定要调用的函数,然后只运行该函数。

通过这种方式,您不必为不同类型的操作管理多个文件。

例如

jQuery:

$.ajax({
        type     : "POST",
        url      : 'myfile.php',
        data     : {'action': 'func1_name', 'val': 'some_value'} //wants to call a specific function 
    },
success:function(response){
console.log(response);
}
);

PHP:

//executing func1
if(isset($_POST['action']) && $_POST['action'] == 'func1_name'){
    func1();
}
function func1(){
   if(isset($_POST['val']))
   echo $_POST['val'];
   die();
}
function func2(){
}