2015-02-27 3 views
4

У меня есть большой проект, который требует обработки нескольких функций через Ajax-вызовы, пока я использую разные файлы для обработки каждого вызова функции. Я знаю, что должен быть лучший способ справиться с запросами через APIКак обрабатывать несколько запросов через API Ajax?

И какова была бы стандартная практика для проектирования такого API с точки зрения структуры?

Спасибо!

+1

Лучшая практика вопросы, как правило, широкие, и спусковой механизм рефлекторных близко голосов в результате. Я рекомендую избегать их здесь. – BoltClock

+0

@BoltClock - Это упало на глухие уши? – adeneo

+0

@adeneo: Я имел в виду избегать вопросов с лучшей практикой, не избегая голосов. Я предполагаю, что ОП не решил отредактировать его, так что это тоже будет на глухих ушах. – BoltClock

ответ

5

Это может быть все, от чего-то довольно простого, до чего-то более сложного, как вы пишете, зависит от вас, предполагая, что вы единственный, кто будет использовать 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); 
    }); 
}); 

на сервере у вас есть один файл и h ой вы установите его в зависимости от используемого языка, но говорят, PHP, и вы могли бы, конечно, получить фантазии с классами и т.д., или просто сделать простой, если/другое или переключатель/случай

<?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 и т. д. и, возможно, только нужно получить ресурсы, соединение с БД и т. д. один раз, а не в каждом файле.

+0

Очень хороший пример. Я обычно выполняю функцию 'fetch()', чтобы пройти через обратный вызов и получить доступ к ней так ('fetch (url, data, function (response)) {...'), но это отлично. – Darren

+0

приятное объяснение –

1

Вот что я думаю, что вы можете сделать -

Вместо создания нескольких файлов для обработки запроса 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(){ 

}