1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/yurunsoft-apiagent

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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+

Тип данных dataType

Название Значение
form Формат параметров формы (например: a=1&b=2), по умолчанию
json Преобразование в формат JSON для отправки

Если тип данных не указан, то по умолчанию будет использоваться form. Другие названия не будут обрабатываться каким-либо образом.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

API-интерфейс прокси, разработанный на PHP, поддерживает функции междоменного проксирования интерфейсов и объединения запросов интерфейсов. Сообщество разработчиков: 74401592 Развернуть Свернуть
MIT
Отмена

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/yurunsoft-apiagent.git
git@api.gitlife.ru:oschina-mirror/yurunsoft-apiagent.git
oschina-mirror
yurunsoft-apiagent
yurunsoft-apiagent
master