mtownsend / request-xml
为Laravel的Request类缺失的XML支持。
Requires
- php: ~7.0|~8.0
- illuminate/http: ~5.5.0|~5.6.0|~5.7.0|~5.8.0|~6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/support: ~5.5.0|~5.6.0|~5.7.0|~5.8.0|~6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- mtownsend/xml-to-array: ^1.0|^2.0
Requires (Dev)
- phpunit/phpunit: ^6.4|^8.5|^9.0|^10.5
README
为Laravel的Request类缺失的XML支持。
此包旨在与Laravel框架一起使用。
安装
通过composer安装
composer require mtownsend/request-xml
注册服务提供者
对于Laravel 5.4及以下版本,将以下行添加到您的config/app.php
/* * Package Service Providers... */ Mtownsend\RequestXml\Providers\RequestXmlServiceProvider::class,
对于Laravel 5.5及以上版本,包将自动为您注册提供者。
使用Lumen
要注册服务提供者,将以下行添加到app/bootstrap/app.php
$app->register(Mtownsend\RequestXml\Providers\RequestXmlServiceProvider::class);
中间件
注册中间件很重要,这样您的应用程序就可以将XML请求转换为请求对象并合并。然后您就可以通过Laravel强大的验证系统运行XML了。
请注意
一旦注册了中间件,您无需进行任何特殊操作即可访问请求XML。它将像JSON或表单请求一样在请求对象中可用。
要设置中间件,打开您的app/Http/Kernel.php
文件。
要全局添加中间件
protected $middleware = [ \Mtownsend\RequestXml\Middleware\XmlRequest::class, ];
要仅对web路由添加中间件
protected $middlewareGroups = [ 'web' => [ \Mtownsend\RequestXml\Middleware\XmlRequest::class, ], ];
要仅对api路由添加中间件
protected $middlewareGroups = [ 'api' => [ \Mtownsend\RequestXml\Middleware\XmlRequest::class, ], ];
或者,如果您想为特定路由添加命名中间件
protected $routeMiddleware = [ 'xml' => \Mtownsend\RequestXml\Middleware\XmlRequest::class, ];
快速入门
确定请求是否想要XML响应
if (request()->wantsXml()) { // send xml response }
确定请求是否包含XML
if (request()->isXml()) { // do something }
获取转换后的XML数组
$data = request()->xml();
方法
请求方法
->wantsXml()
与Laravel的->wantsJson()
方法非常相似,通过返回布尔值。它会告诉您传入的请求是否希望收到XML响应。
请求方法
->isXml()
返回布尔值。这将告诉您传入的请求是否为XML。
请求方法
->xml()
返回数组。这将XML请求转换为PHP数组。您可以根据需要将其转换为对象
$xml = (object) request()->xml();
或者将其包装在集合中
$xml = collect(request()->xml());
异常
如果在请求中接收到无效的XML,应用程序将抛出一个包含原始无效XML的异常。如果您想在应用程序中处理此类异常,可以轻松捕获它并在应用程序的app/Exceptions/Handler.php
中提供自己的代码,如下所示
if ($exception instanceof \Mtownsend\RequestXml\Exceptions\CouldNotParseXml) { // do something }
目的
您是否曾想过Laravel为什么提供了将数据转换为JSON的有用方法,但却完全忘记了XML?此包旨在为Laravel的Request类添加缺失的XML功能。现在,您的Laravel应用程序可以检测并自动将传入的XML请求合并到请求对象中。您可以通过Laravel内置的验证系统运行XML请求——它只需运行即可!XML在您的Laravel应用程序中作为二等公民的日子已经结束。
您可能感兴趣的其它包
致谢
- Mark Townsend
- 所有贡献者
测试
您可以使用以下命令运行测试
./vendor/bin/phpunit
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。