Web-сервис на python3 для работы с адаптером СМЭВ3 по HTTP
Данный проект представляет собой web-service на Python3 для работы с адаптером СМЭВ3. Сервис предоставляет HTTP REST API для отправки запросов СМЭВ3, фонового опроса адаптера СМЭВ3 с целью получения ответов и возврата ответов СМЭВ3 по HTTP REST API.
smev3_adapter_service использует Mongo и Sanic
Тело запроса и ответа представляет собой JSON, полностью аналогичный по структуре XML того запроса, который передаётся. Для авторизации всегда нужен заголовок HTTP X-Auth-Token. Для отправки запроса в СМЭВ используется URL /schedule_query/<тип_запроса>/
Примеры отправки запроса для получения выписок ЕГРЮЛ и ЕГРИП
POST http://localhost:9003/schedule_query/FNSVipUL/
{
"ЗапросЮЛ": {
"ОГРН": "1027700070518"
},
"ИдДок": "3"
}
http://localhost:9003/schedule_query/FNSVipIP/
{
"ЗапросИП": {
"ОГРНИП": "315723200006533"
},
"ИдДок": "4"
}
Для получения ответов используется URL /get_document/<тип_запроса>/<идентификатор_запроса>
Примеры получения ответа для получения выписок ЕГРЮЛ и ЕГРИП:
http://localhost:9003/get_document/FNSVipUL/1027700070518
http://localhost:9003/get_document/FNSVipIP/315723200006533
Допустимые типы запросов и идентификаторы для каждого типа запросов определяются настройками
MONGO_URL - адрес для доступа к mongo
ADAPTER_SETTINGS - словарь с настройками адаптера. Содержит параметры:
- url - адрес WSDL адаптера СМЭВ 3 (например, http://192.168.1.1:7575/ws?wsdl)
- mnemonic - мнемоника ИС в адаптере СМЭВ 3
- test_mode - boolean-параметр тестового режима. Если True, в XML будет подставлен соответствующий элемент для маркирования тестового режима. В производственном режиме всегда False
HOST - IP-адрес, на котором будет выполняться bind (например, '0.0.0.0')
PORT - Порт прослушивания сервиса (в примерах 9003)
API_KEY - Ключ для авторизации. Должен передаваться в заголовке, определённом в API_KEY_HEADER
API_KEY_HEADER - имя заголовка с ключом ('X-Auth-Token')
RESPONSE_CHECK_TIMEOUT - период проверки ответов от адаптера СМЭВ 3 в секундах
DOCUMENT_IDENTIFIERS - словарь идентификаторов документов для получения ответов СМЭВ 3. Ключи - типы документов (из URL), значения - разделённые точкой иерархические пути к атрибуту в ответе (см. формат в документации СМЭВ 3). Например, параметры ниже определяют, что для ESIARegister идентификатором будет идентификатор запрса СМЭВ 3, а для получения выписок - ОГРН и ОГРНИП соответственно.
DOCUMENT_IDENTIFIERS = {
'FNSVipUL': 'СвЮЛ.ОГРН',
'FNSVipIP': 'СвИП.ОГРНИП',
'ESIARegister': 'request_id',
'ESIARegisterCertificate': 'request_id',
}
Кроме того, в папке xsd содержатся типы данных запросов и ответов СМЭВ. Каждая подпапка называется по ID типа данных с технологического портала СМЭВ3 и содержит распакованный zip-файл формата данных, скачанный с технологического портала СМЭВ 3. За счёт добавления новых типов поддерживается хоршая расширяемость проекта. После добавления типа нужно занести соответствующую настройку в словарь DOCUMENT_IDENTIFIERS.
Для запуска нужно отредактировать файл settings.py в корне проекта, а затем выполнить
make run
Программное обеспечение данного репозитория лицензируется по лицензии GNU GPL v3. Автором является Станислав Соколко. По всем вопросам обращаться в официальную группу поддержки https://vk.com/topic-164668038_40518373. Сайт разработчика ит-решения.рф