lowel / gar-address-verification-api
GAR BD FIAS上传器和地址验证的实时Web API示例
Requires
- ext-pcntl: *
- ext-readline: *
- ext-xmlreader: *
- ext-zip: *
- 1owe1/query-box: ^1.0
- imefisto/psr-swoole-native: ^1.1
- monolog/monolog: ^3.0
- nyholm/psr7: ^1.5
- slim/psr7: ^1.5
- slim/slim: 4.*
- splitbrain/php-cli: ^1.2
- vlucas/phpdotenv: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.9
- phpstan/phpstan: ^1.7
- phpunit/phpunit: ^9.5
- symplify/easy-coding-standard: ^11.0
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
默认数据库结构
- 地址对象
- 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/code/all?address=калм,лаганс,кра,кра
JSON响应格式
可以使用最后一个对象的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 скорее заглушка, но всё же это лучше чем голый репозиторий)