API-интерфейс Агент
Введение
API-агент — это прокси-сервер для интерфейсов, который поддерживает функции междоменного проксирования и объединения запросов.
Онлайн-документация
http://doc.yurunsoft.com/ApiAgent
Установка
Добавьте конфигурацию в ваш composer.json:
{
"require": {
"yurunsoft/api-agent": "1.0.*"
}
}
Перейдите в каталог ApiAgent и выполните команду:
composer install
Междоменное проксирование
Доступ к интерфейсу осуществляется через файл index.php. По умолчанию параметр — url. Обратите внимание на необходимость urlencode-кодирования.
Пример: http://apiagent.toolapi.net/?url=http://www.baidu.com
(Это демонстрационный адрес, который может перестать работать в любой момент. Для использования рекомендуется заменить его на свой собственный!)
Этот интерфейс возвращает состояние кода, заголовки ответа (включая cookie) и содержимое ответа без изменений.
Конфигурационный файл: Config/cross.php
Объединение запросов
Доступ к пакетному запросу осуществляется через файл batch.php. Запрос отправляется с помощью POST-запроса в формате JSON.
Конфигурационный файл: Config/batch.php
Код вызова jQuery:
// Устанавливаем передачу cookie при междоменном запросе, если не нужно, можно удалить
$.ajaxSetup({
xhrFields: {
withCredentials: true
},
});
$.ajax({
// Это демонстрационный адрес, который может перестать работать в любой момент, рекомендуется заменить на свой!
url: 'http://apiagent.toolapi.net/batch.php',
method: 'post',
data: JSON.stringify({
/*aip: {
url: 'ip', // В apis предварительно определён интерфейс, достаточно передать псевдоним
getData: {ip: '218.4.255.255'},
},*/
aip: {
url: 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json',
getData: {ip: '218.4.255.255'}, // Здесь изменение IP также изменит результат baike ниже
},
// weather2 — это неправильный результат, который прервёт запрос
/*weather2: {
url: 'http://www.weather.com.cn/data/sk/1010101001.html',
condition: { // Возвращаемый результат.weatherinfo не равен null
value: '{$weather2.weatherinfo}',
regular: 'is not null',
},
},*/
baike: {
url: 'http://baike.baidu.com/api/openapi/BaikeLemmaCardApi?scope=103&format=json&appid=379020&bk_length=600',
// Параметры get
getData: {
bk_key: '{$aip.city}', // Данные, возвращаемые из api-интерфейса.city
},
// Параметры post
postData: {},
// Тип данных запроса GET
getDataType: 'form',
// Тип данных тела запроса POST
bodyDataType: 'form',
// Пользовательский заголовок, по умолчанию используется стандартный
header: {
'test': 'aaa',
},
// Проверка правильности возвращаемого результата, неправильный прервёт запрос и вернёт ответ
condition: {
value: '{$baike.errno}',
regular: 'is not null',
},
},
}),
success: function(data) {
console.debug(data);
}
});
{
// Успех
"success": true,
// Сообщение об ошибке
"message": "",
// Возвращённые данные
"data": {
"test": ""
},
// Результат
"result": {
// Ключ=>данные заголовка
"test": {
// Код состояния
"status_code": 208,
// Заголовок
"header": {
"Server": "squid/3.5.20",
"Date": "Mon, 09 Oct 2017 07:38:54 GMT",
"Content-Type": "application/octet-stream",
"Content-Length": "0",
"Connection": "keep-alive"
},
// Время запроса
"time": 0.047
}
}
}
Код | Значение |
---|---|
is null | null === $value |
is not null | null !== $value |
empty array | 0 === count($value[0]) |
not empty array | count($value[0]) > 0 |
true | true === $value |
false | false === $value |
Помимо предопределённых правил, вы можете написать регулярное выражение для проверки. Например: \d+
Название | Значение |
---|---|
form | Формат параметров формы (например: a=1&b=2), по умолчанию |
json | Преобразование в формат JSON для отправки |
Если тип данных не указан, то по умолчанию будет использоваться form. Другие названия не будут обрабатываться каким-либо образом.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )