bmatovu/laravel-xml
Composer 安装命令:
composer require bmatovu/laravel-xml
包简介
Laravel XML Support
README 文档
README
This package comes with the much desired xml support for you Laravel project.
Installation
composer require bmatovu/laravel-xml
Requests
Get the request content (body).
$request->xml();
* Returns Bmatovu\LaravelXml\Support\XMLElement object.
Determine if the request content type is XML.
$request->sentXml();
Determine if the current request is accepting XML.
$request->wantsXml();
Validate XML content
$isValid = Xml::is_valid($request->xml()); if (! $isValid) { return response()->xml(['message' => 'The given data was malformed.'], 400); }
Validation - Against XML Schema Definition
$errors = Xml::validate($request->xml(), 'path_to/sample.xsd'); if ($errors) { return response()->xml([ 'message' => 'The given data was invalid.', 'errors' => $errors, ], 422); }
Responses
Route::get('/users/{user}', function (Request $request, int $userId) { $user = User::findOrFail($userId); return response()->xml($user); });
<?xml version="1.0" encoding="UTF-8"?> <document> <id>1</id> <name>jdoe</name> <email>jdoe@example.com</email> </document>
Route::get('/users/{user}', function (Request $request, int $userId) { $user = User::findOrFail($userId); return response()->xml(['user' => $user->toArray()]); });
<?xml version="1.0" encoding="UTF-8"?> <document> <user> <id>1</id> <name>jdoe</name> <email>jdoe@example.com</email> </user> </document>
Route::get('/users/{user}', function (Request $request, int $userId) { $user = User::findOrFail($userId); return response()->xml($user, 200, [], ['root' => 'user']); });
<?xml version="1.0" encoding="UTF-8"?> <user> <id>1</id> <name>jdoe</name> <email>jdoe@example.com</email> </user>
Route::get('/users', function () { $users = User::get(); return response()->xml(['users' => $users->toArray()]); });
<?xml version="1.0" encoding="UTF-8"?> <document> <users> <id>1</id> <name>John Doe</name> <email>jdoe@example.com</email> </users> <users> <id>2</id> <name>Gary Plant</name> <email>gplant@example.com</email> </users> </document>
And will automatically set the content type to xml
Content-Type → text/xml; charset=UTF-8
Middleware
First register the middleware in app\Http\Kernel.php
protected $routeMiddleware = [ // ... 'xml' => \Bmatovu\LaravelXml\Http\Middleware\RequireXml::class, ];
Then use the middleware on your routes, or in the controllers.
Route::post('/users', function (Request, $request) { // do something... })->middleware('xml');
This middleware only checks the Content-Type by defaul;
[415 - Unsupported Media Type]
<?xml version="1.0" encoding="UTF-8"?> <document> <message>Only accepting content of type XML.</message> </document>
To check is the passed content is valid XML, pass a bool to the middleware
Route::post('/users', function (Request, $request) { // do something... })->middleware('xml:1');
[400 - Bad Request]
<?xml version="1.0" encoding="UTF-8"?> <document> <message>The given data was malformed.</message> </document>
Utilities
Encode: Array to Xml
Xml::encode(['key' => 'value']);
Or
xml_encode(['key' => 'value']);
Decode: Xml to Array
Xml::decode('<?xml version="1.0" encoding="UTF-8"?><document><key>value</key></document>');
Or
xml_decode('<?xml version="1.0" encoding="UTF-8"?><document><key>value</key></document>');
Credits
Under the hood, I'm using;
Spatie's array to XML convernsion
Hakre's XML to JSON conversion
Reporting bugs
If you've stumbled across a bug, please help us by leaving as much information about the bug as possible, e.g.
- Steps to reproduce
- Expected result
- Actual result
This will help us to fix the bug as quickly as possible, and if you do wish to fix it yourself; feel free to fork the package on GitHub and submit a pull request!
bmatovu/laravel-xml 适用场景与选型建议
bmatovu/laravel-xml 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 285.07k 次下载、GitHub Stars 达 88, 最近一次更新时间为 2018 年 07 月 01 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「package」 「xml」 「response」 「middleware」 「request」 「laravel」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 bmatovu/laravel-xml 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 bmatovu/laravel-xml 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 bmatovu/laravel-xml 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Load DOM document safety
HTTP request logger middleware for Laravel
Class to generate a standard structure for api json responses
Simple ASCII output of array data
Added a method to Laravel response for handling xml response and also converting Eloquent return to XML.
统计信息
- 总下载量: 285.07k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 91
- 点击次数: 30
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-07-01
