lowel/gar-address-verification-api

此包最新版本(0.1.0)的许可证信息不可用。

GAR BD FIAS上传器和地址验证的实时Web API示例

0.1.0 2022-10-31 11:30 UTC

This package is not auto-updated.

Last update: 2024-10-01 19:53:52 UTC


README

描述

此服务包括以下内容:

  • 使用GAR BD FIAS源代码创建和组织本地数据库的工具;
  • 实现简单的RESTful服务,用于验证用户地址数据或获取特殊代码。

项目配置

项目使用".env"文件来获取全局配置变量。配置文件示例在"./env.example"文件中。

在设置项目之前,请使用以下命令:

cp ./.env.example ./.env

更复杂的设置在"./config/"目录中,包括以下内容:

  • drivers/ * - SQL查询构造器的基本模板;
  • migration.php - 应迁移的类-模型列表;
  • regions.php - 需要从GAR BD FIAS源代码加载的区域列表;
  • xml_handlers_config.php - 解析GAR BD FIAS存档xml文档的处理程序列表;

如果您使用该服务将数据从GAR BD FIAS加载到本地数据库,则需要将存档放置在./resources/archive/gar_example.zip路径下或指定文件配置文件.env中的自定义路径!

通过命令行交互

用于与服务交互的接口如下

./gar <команда> [параметры] 

主要命令集

  • 获取现有功能说明
./gar help 
  • 迁移和将数据加载到本地数据库
./gar upload -m 
  • 重新创建当前数据库结构并开始使用两个线程加载第8和第17个区域
./gar upload --migrate-recreate -r 8,17 -t 2 
  • 启动服务器(根据配置文件将启动内置测试服务器php或SWOOLE)
./gar serve 

默认数据库结构

数据库结构截至08.10.22,将形成以下表格

  • 地址对象
    • addr_obj - 地址对象;
    • addr_obj_levels - 根据级别对地址对象的分类;
    • addr_obj_typenames - 根据类型对地址对象的分类(城市、区、街道等);
    • addr_obj_params - 描述特定地址对象参数的表;
    • addr_obj_params_types - 地址对象参数的分类;
    • addr_obj_by_addr_obj_hierarchy - 地址对象层次结构,格式为master "父" => "子"
  • 房屋
    • houses - 房屋;
    • houses_type - 根据类型对房屋的分类;
    • houses_addtype - 根据类型对房屋的额外分类;
    • houses_by_addr_obj_hierarchy - 属于特定地址对象的房屋图;

演示REST API服务

项目中的演示服务旨在使用SWOOLE框架运行,但您可以通过在.env文件中禁用SWOOLE_SERVER_ENABLE选项来禁用此选项,并使用NGINX或APACHE通过./public/index.php入口点。

预期请求

  • 解析用户地址
/<номер_региона>/address?address="..."
  • 根据特定的OBJECTID或地址获取代码(或使用类型"all"获取所有代码)
/<номер_региона>/code/<тип_кода>?address="..."  (по адресу)
/<номер_региона>/code/<тип_кода>?&objectid="..." (по objectid)

获取8区域内"卡姆,拉甘斯,克拉,克拉"地址的验证地址的请求示例

http://0.0.0.0:9501/08/address?address=калм,лаганс,кра,кра

响应

Ответ на http://0.0.0.0:9501/08/address?address=калм,лаганс,кра,кра

获取与类似地址所有可用代码的请求示例

http://0.0.0.0:9501/08/code/all?address=калм,лаганс,кра,кра

JSON响应格式

Ответ на http://0.0.0.0:9501/08/code/all?address=калм,лаганс,кра,кра

可以使用最后一个对象的objectid获取相同响应

http://0.0.0.0:9501/08/code/all?objectid=114436

配置

环境中的变量应根据.env.example声明。

ГАР и миграций загрузчика конфигурации определены в директории ./config

./config
├── migration.php [описание миграций]
├── regions.php   [список регионов]
└── xml_handlers_config.php [список обработчиков]

Обработчики представлены по пути ./cli/XMLParser/Files в двух директориях

  • ByRegions - те файлы, которые требуется обработать для каждого региона;
  • ByRoot - те файлы, которые требуется обработать единожды (корневые файлы описаний).

Имена обработчиков соответствуют префиксу имен файлов в самом архиве. На данный момент реализованны следующие обработчики

cli/XMLParser/Files/
├── ByRegions
│   ├── AS_ADDR_OBJ_PARAMS.php
│   ├── AS_ADDR_OBJ.php
│   ├── AS_ADM_HIERARCHY.php
│   ├── AS_HOUSES.php
│   └── AS_MUN_HIERARCHY.php
├── ByRoot
    ├── AS_ADDHOUSE_TYPES.php
    ├── AS_ADDR_OBJ_TYPES.php
    ├── AS_HOUSE_TYPES.php
    ├── AS_OBJECT_LEVELS.php
    └── AS_PARAM_TYPES.php

Тесты

Интеграционные тесты находятся по пути ./tests. Файл конфигурации phpunit заранее определён, так что запуск тестов можно осуществлять вызовом ./vendor/bin/phpunit. Для проверки необходимо загрузить базу через ./cli upload и иметь подключение к бд.

!!ВНИМАНИЕ!!: тесты привязаны к контексту и проверяют функционал приложения на основе действующих данных из 8-го региона (Калмыкия). Тестовый набор данных можно загрузить из следующего репозитория (если нет желания скачивать полный архив на 30гб+).

Заключение

Сервис всё ещё дорабатывается, данный readme скорее заглушка, но всё же это лучше чем голый репозиторий)