mtownsend/request-xml

为Laravel的Request类缺失的XML支持。

2.5.0 2024-04-03 15:18 UTC

This package is auto-updated.

Last update: 2024-09-12 02:51:12 UTC


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应用程序中作为二等公民的日子已经结束。

您可能感兴趣的其它包

致谢

测试

您可以使用以下命令运行测试

./vendor/bin/phpunit

许可证

MIT许可证(MIT)。请参阅许可证文件获取更多信息。