API — тестовый доступ
В качестве входных параметров, передаются следующие аргументы:
- grant_type – тип авторизации, всегда будет равен = password, так как авторизация происходит по имени пользователя и паролю
- userName – имя пользователя
- password – пароль пользователя
Пример request
POST /Authorization HTTP/1.1 Host: api.GosReestrRF.ru Content-Type: application/x-www-form-urlencoded Cache-Control: no-cache grant_type=password&userName=&password= https://api.GosReestrRF.ru/Authorization
Возвращаемые данные
Метод возвращает json, в котором содержатся три параметра:
- access_token — идентификатор сессии (токен), который необходимо использовать в дальнейшей работе с сервисом. Токен выдается на одни сутки, с момента запроса;
- token_type – тип токена
- expires_in – время срока действия токена, в секундах
Пример response
Тестирование метода
Получение токена авторизации:
# SEARCHSERVICE: Метод GetStatements_ActualV2
Общее описание
Применение данного метода позволяет посредством одной команды получать основные сведения и полные актуальные выписки из ГосРеестра в части ЕГРЮЛ, ЕГРИП в формате xml в отношении нескольких юридических лиц и индивидуальных предпринимателей, поиск по нескольким поисковым элементам: ОГРН и ИНН юридических лиц и индивидуальных предпринимателей.
Структурный пример запроса / ответа
Входные параметры
В качестве входных параметров, передаются следующие аргументы:
- requestId – это уникальный идентификатор запроса, который клиент устанавливает сам, для идентификации ответов. Формат индентификатора – произвольный
- regNumbers – список необходимых ОГРН/ОГРНИП/ИНН
Пример request
POST /SearchService/GetStatements_ActualV2 HTTP/1.1 Host: api.GosReestrRF.ru Content-Type: application/json;charset=UTF-8 Authorization: bearer 1PveD8vQQFa30l6x5L-G544_-zjsYDfVbFOlSGQLhidZJBycUnsArEzGf8Qu1mMLodCTnLU9bAHZZ97WOm7sOlEFKKTM7Tl2DAcdrG6vwgMoDhLzB7Iu8sg2nP037qyceEiC9mM3rV4ljSWQBNokabyzo3ZdqjfyOCAyjfa8qvO6WG9uMZL0wa58qllp0CaN5xEiGs40o2J_ZrnB47coGsbz1VqiCvghesF79LR_lZtfAgsNaeAfEQvIkr1NGLa8wb98-2TiQz2Vn43Hk9isvo6GrNbMhEfaTvOkSwF5o8ICxn8g5SFqZQHl9_Sqr0d Cache-Control: no-cache
< "requestId":"123-456-789", "regNumbers":["1073914000489","402904261850","7727649295","304381736500162"] >https://api.gosReestrRF.ru/SearchService/GetStatements_ActualV2
Возвращаемые данные
Возвращается массив json-элементов, содержащий найденные данные по входным критериям.
- requestId – Уникальный идентификатор запроса, задается в вольной форме на стороне клиента, для идентификации запросов.
- xml_allInfo – XML код, для найденного индивидуального предпринимателя или юридического лица, в сжатом виде (описание методов сжатия и распаковки).
- xml_generalInfo – XML код в котором содержатся основные сведения об индивидуальном предпринимателе или юридическом лице.
- reestr – Тип xml файла ЕГРЮЛ или ЕГРИП
- version – Версия xml файла налоговой. Согласно новому регламенту, теперь последняя версия для ЕГРЮЛ — 4.06, для ЕГРИП — 4.05. Подробнее
Пример response
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Content-Length: length [ < "requestId": "123-456-789", "xml_allInfo": "G1cQfq/U/3Dkp0Ysda45w4eas56d45646as5d463qwerAAdsdfd98", "xml_generalInfo":<СвИП ОГРНИП="317237500417837" ИННФЛ="231516752681" Статус="ДЕЙСТВУЮЩИЙ"><СвФЛ>СвФЛ>СвИП> ", "reestr":"ЕГРИП", "version":"4.05" >, < "requestId": "123-456-789", "xml_allInfo": "I0cQfY+Uf2j52dgz4xuWgH2KorxF+YXsKkJKQMpK2TxyWTYPoMUxl", "xml_generalInfo":<СвИП ОГРНИП="317237500417340" ИННФЛ="231129915410" Статус="ДЕЙСТВУЮЩИЙ"><СвФЛ>СвФЛ>СвИП> ", "reestr":"ЕГРИП", "version":"4.05" >, < "requestId": "123-456-789", "xml_allInfo": "G8cVvi/Qd1jwqgUoav+4JAHJuSqK3hV9hSYoDLQ20ABNLyXZbuLak", "xml_generalInfo":<СвИП ОГРНИП="316231500053162" ИННФЛ="231516752681" Статус="Индивидуальный предприниматель прекратил деятельность в связи с принятием им соответствующего решения"><СвФЛ>СвФЛ>СвИП> ", "reestr":"ЕГРИП", "version":"4.05" >, < "requestId": "123-456-789", "xml_allInfo": "QWEQfaeKf5jSA0+yvLu62WA7TxQvPFHFF5AUlSqwCwKER0shCSmHW", "xml_generalInfo": "<СвЮЛ ОГРН="1174401008880" ИНН="4401184680" Статус="ДЕЙСТВУЮЩЕЕ">СвЮЛ> ", "reestr":"ЕГРЮЛ", "version":"4.06" >, < "requestId": "123-456-789", "xml_allInfo": "G0cUvq/Ud1j5ImolL9ld73ptBchV1ZteVeoTNFEUKSVSEzW95Cckr", "xml_generalInfo": "<СвЮЛ ОГРН="1117423000287" ИНН="7423009871" Статус="ДЕЙСТВУЮЩЕЕ">СвЮЛ> ", "reestr":"ЕГРЮЛ", "version":"4.06" > ]
Тестирование метода
Распаковать полученный json-элемент xml_allInfo:
# SEARCHSERVICE: МЕТОД GETSTATEMENTS_HISTORICAL
Общее описание
Применение данного метода позволяет посредством одной команды получать сведения из ГосРеестра в части ключевых изменений ЮЛ в формате xml в отношении нескольких юридических лиц, поиск производится по нескольким поисковым элементам: ОГРН и ИНН юридического лица.
Структурный пример запроса / ответа
Входные параметры
В качестве входных параметров, передаются следующие аргументы:
- requestId – это уникальный идентификатор запроса, который клиент устанавливает сам, для идентификации ответов. Формат индентификатора – произвольный
- regNumbers – список необходимых ОГРН/ОГРНИП/ИНН
Пример request
POST /SearchService/GetStatements_Historical HTTP/1.1 Host: api.GosReestrRF.ru Content-Type: application/json;charset=UTF-8 Authorization: bearer 1PveD8vQQFa30l6x5L-G544_-zjsYDfVbFOlSGQLhidZJBycUnsArEzGf8Qu1mMLodCTnLU9bAHZZ97WOm7sOlEFKKTM7Tl2DAcdrG6vwgMoDhLzB7Iu8sg2nP 037qyceEiC9mM3rV4ljSWQBNokabyzo3ZdqjfyOCAyjfa8qvO6WG9uMZL0wa58qllp0CaN5xEiGs4 0o2J_ZrnB47coGsbz1VqiCvghesF79LR_lZtfAgsNaeAfEQvIkr1NGLa8wb98- Cache-Control: no-cache
< "requestId":"123-456-789", "regNumbers":["1117423000287","5147746223114","1161690138114","6324034995"] >https://api.GosReestrRF.ru/SearchService/GetStatements_Historical
Возвращаемые данные
Возвращается массив json-элементов, содержащий найденные данные по входным критериям.
- requestId – Уникальный идентификатор запроса, задается в вольной форме на стороне клиента, для идентификации запросов.
- xml_historical – XML код содержащий ключевые изменения, для найденного юридического лица, в сжатом виде. В случае если был прислан ошибочный (несуществующий) ОГРН / ОГРНИП / ИНН, в данном параметре будет фраза – «ОГРН или ОГРНИП или ИНН — не выявлен».
Пример response
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Content-Length: length [ < "requestId": "123-456-789", "xml_historical": "mQAAAB+LCAAAAAAABACzsa/IzVEoSy0qzszPs1Uy1DNQUkjNS85PycxLt1Uqz8xLyS8v1jU0MjVUsrezcXUPCvXJyCwuUbgw5cKGi00XNlyYdLH7wmZbJSMDQwtdQ0NdIyMlO5sLCy9surDuwmyFC/MuTL6w4MJcoMGGhuYmRsYGBgZGFuZKChdmXJgLEoaIWVqYGyop6NvZ6MMtsAMAJLfO8pkAAAA=" >, < "requestId": "123-456-789", "xml_historical": "tDIAAB+LCAAAAAAABADtW1tPG0cU/isrP/QJxzOzO3tRgTxVfelTpf6CJmqQWlBL2vQxQZXy0Ie4BnP1BYMTWiWCKCUVbbj8heN/1O/M7hpflrVFMLHNCrB3zpy5fd+3Z2Znltn7v/7wvfXLw5+WF5YW53LynshZDxe/XXqwsPjdXO7JwuKDpSfLeam0zN2fn/3iy6+/+erRwvJji9bobWuF3lKp9Tv9PZdT" >, < "requestId": "123-456-789", "xml_historical": "oSwAAB+LCAAAAAAABADtWltvG0UU/iurfeDJW+/s1RZx+oR44QmJX0ArGgkSQQrlsQ1IfeChjuMQx6nXV0BVQ1KVBBmay184+4/45uzFsWVv1i5OvYmjrL1z5szMme98c+bmlfs/fvO18sPD7zbXNtZLqrinq8rD9S83Hqytf1VSn6ytP9h4sqkJwxbq/dWVTz79/IvPHq1tPlaoSm/8LXpDFf8X+" >, < "requestId": "123-456-789", "xml_historical": "cCwAAB+LCAAAAAAABADdWs1u20YQfhWCh6IFRGuXyz+htnMqeumpQJ+gCVoDrY3WadNj7B5y6CGKf1pHqmTJdpMCDaQgtQu1sZVXGL5RZ4Y/EmWJlBhQkBkkDj27w9355tvZ5cyu3/vp22+0Hx98v7u1s72hyzWhaw+2v9y5v7X91Yb+aGv7/s6jXUOattTvba5/8unnX3z29dbuQw2O4LW/D6/hwP8F/" >]
Тестирование метода
Распаковать полученный json-элемент xml_historical:
XML
Сведения для разработчиков
Для получения информации используются запросы с параметрами GET или POST.
В ответе от API приходит JSON строка, в которой присутствует xml код в сжатом виде. Сжатие строки с XML кодом, происходит при помощи стандартной библиотеки .NET Framework System.IO.Compression и класса GZipStream. Это используется для того чтобы уменьшить объем передаваемых данных.
Методы сжатия и распаковки (примеры указаны на языке программирования c# (си шарп)):
/// /// Запаковывает строку из обычного состояния в сжатое /// /// Строка для сжатия /// public static string Compress(string text) < byte[] buffer = Encoding.UTF8.GetBytes(text); var memoryStream = new MemoryStream(); using (var gZipStream = new GZipStream(memoryStream, CompressionMode.Compress, true)) < gZipStream.Write(buffer, 0, buffer.Length); >memoryStream.Position = 0; var compressedData = new byte[memoryStream.Length]; memoryStream.Read(compressedData, 0, compressedData.Length); var gZipBuffer = new byte[compressedData.Length + 4]; Buffer.BlockCopy(compressedData, 0, gZipBuffer, 4, compressedData.Length); Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gZipBuffer, 0, 4); return Convert.ToBase64String(gZipBuffer); > ////// Распаковывает строку из сжатого состояния в обычное /// /// Строка в сжатом виде /// public static string Decompress(string compressedText) < byte[] gZipBuffer = Convert.FromBase64String(compressedText); using (var memoryStream = new MemoryStream()) < int dataLength = BitConverter.ToInt32(gZipBuffer, 0); memoryStream.Write(gZipBuffer, 4, gZipBuffer.Length - 4); var buffer = new byte[dataLength]; memoryStream.Position = 0; using (var gZipStream = new GZipStream(memoryStream, CompressionMode.Decompress)) < gZipStream.Read(buffer, 0, buffer.Length); >return Encoding.UTF8.GetString(buffer); > >
- Основные ссылки
- Статистическая информация
- Сервисы и услуги
- Новости
- Общая информация
- Федеральная служба информации в СМИ
- Правила использования
- Контактные данные
- 115093 Москва, Партийный пер., д. 1, корп. 57, стр. 3
- (499) 755-52-11
- info@fsirf.ru
© 2009–2023 Федеральная служба информации 18+
Федеральная Служба Информации. РФ
Свидетельство о регистрации ИА № ФС77-61652 от 07 мая 2015 г. выдано Федеральной службой по надзору в сфере связи, информационных технологий и массовых коммуникаций (Роскомнадзор).
Федеральная Служба Информации. Европейское Бюро
Свидетельство о регистрации ИА № ФС77 — 60182 от 19.12.2014 выдано Федеральной службой по надзору в сфере связи, информационных технологий и массовых коммуникаций (Роскомнадзор).
Адрес: 115093 Москва, Партийный пер., д. 1, корп. 57, стр. 3
What is the X-REQUEST-ID http header?
Then, in order (1) to corrolate an webrequest with the request forwarded to your application (2) No, because the user doesn’t send it, the router sets it (3) See (2), but it might help track individual requests while debugging.
Aug 21, 2014 at 18:30
4 Answers 4
When you’re operating a webservice that is accessed by clients, it might be difficult to correlate requests (that a client can see) with server logs (that the server can see).
The idea of the X-Request-ID is that a client can create some random ID and pass it to the server. The server then include that ID in every log statement that it creates. If a client receives an error it can include the ID in a bug report, allowing the server operator to look up the corresponding log statements (without having to rely on timestamps, IPs, etc).
As this ID is generated (randomly) by the client it does not contain any sensitive information, and should thus not violate the user’s privacy. As a unique ID is created per request it does also not help with tracking users.
Перевод «request ID verifying» на русский
In an effort to enforce the ban on selling alcohol products to minors, the commission has approved a proposal to add a provision to the draft law that would give salespeople the legal right to request ID verifying the age of the customer.
Также в целях реализации запрета по продаже алкогольной продукции несовершеннолетним Комиссия согласилась с предложением о внесении в законопроект положения, законодательно закрепляющего право работника торговли требовать документ, удостоверяющий личность и позволяющий подтвердить возраст покупателя.
Предложить пример
Другие результаты
Additionally, if you are a trainee, you can obtain automated discount rates simply by providing a legitimate ID verifying that you are a pupil.
Кроме того, если вы студент, вы можете получить автоматические скидки, просто представив действительный идентификатор, подтверждающий, что вы являетесь студентом.
They request IDs that are not obligatory in Mexico and conduct flagrant racial profiling.
Они запрашивают удостоверения личности, которые не являются обязательными в Мексике, и проводят вопиющее расовое профилирование.
Nginx tracking запросов
Собственно, рано или поздно, все узнают, что в nginx есть из коробки request_id, начинают ударно гуглить — находят не так много информации, либо мой гугл не такой как у вас. Ниже собственно информация, как настроить трекинг через map. Сразу уточню, что с учетом специфики, мне все равно приходится, на часте серверов явно задавать параметры, но в теории можно все делать через map
Схема трекинга запроса, ниже. Задача проследить запрос, который приходит из интернета от dmz-nginx до nginx, который стоит около приложения, на схеме он обозначен как app-nginx
Настройка DMZ nginx
Для удобства создадим два файла для include — один будем использовать на DMZ, другой на app-nginx
map $http_x_request_id $requestid < default $request_id; >proxy_set_header X-Request-ID $requestid; add_header X-Request-ID $requestid always;
расшифровка MAP
какое бы значение не получили в http_x_request_id — мы default определяем как переменная nginx — request_id, то есть http_x_request_id = request_id, которое присвоит значение нашей переменной $requestid
Небольшой пример для большего понимания
map $arg_one $result
ЭТО ВАЖНО — надо точно знать, если на уровне секции server задание
proxy_set_header
Следующие две строки задают и добавляют proxy_set_header для X-Request-ID равной переменной определенной нами $requestid это будет работать, ТОЛЬКО если на уровне секции server нет определения proxy_set_header — https://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_set_header
после чего мы делаем include указаного файла в секции http — nginx.conf
ЧТОБЫ РАБОТАЛО, так как на уровне server почти всегда задаются параметры proxy_set_header — явно указываем это в секции server
Секция server
Если у нас есть на уровне секции server. задача своих proxy_set_header, то нам необходимо дописать
proxy_set_header X-Request-ID $requestid; add_header X-Request-ID $requestid;
app-nginx
mkdir /etc/nginxinclude nano /etc/nginxinclude/requestid_dmz.conf
map $http_x_request_id $requestid < default $http_x_request_id; "" $request_id; >proxy_set_header X-Request-ID $requestid; add_header X-Request-ID $requestid always;
Тут мы в MAP задаем нашей переменной $requestid — значение которое получаем от DMZ nginx, в случае его отсутствия — генерируем собственное, остальное аналогично DMZ — добавить в http наш include
Логирование
Чтобы результат нашего труда — надо сделать кастомный формат логов добавив туда переменную, пример такого формата
log_format upstream_time '$remote_addr - $remote_user [$time_local] ' '"$scheme" "$host" "$requestid" "$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" ' 'rt="$request_time" urt="$upstream_response_time" ' '$server_name to: $upstream_addr $ssl_protocol "$ssl_cipher"';
Тестирование и отладка
Если все верно настроено, вы можете выполнить команду
curl -I https: //example.com |
вы увидите примерно следующий вывод. где ключевое X-Request-ID, обратите внимание что оно одинаково — то есть там значение и DMZ и nginx-app одинаково
HTTP/1.1 404 Not Found Server: nginx Content-Type: text/html; charset=utf-8 Connection: keep-alive Status: 404 Not Found X-Request-Id: 35da564d64a672d15928df98da6c013a X-Runtime: 0.008507 X-Request-ID: 35da564d64a672d15928df98da6c013a
Чтобы проверить, что снаружи даже если передать свои параметры, то вернуться ваши можно командой
curl -I https: //example.com -H «X-Request-ID: 123456» |
Убедиться, что app—nginx корректно работает и принимает X-Request-ID, можно выполнив
curl -I https: //example.com -H «X-Request-ID: 123456» |
но значение nginx-app уже вернет следующего типа, то есть возьмет указанный вами X-Request-ID
HTTP/1.1 404 Not Found Server: nginx Content-Type: text/html; charset=utf-8 Connection: keep-alive X-Request-Id: 123456 X-Runtime: 0.006694 X-Request-ID: 123456