mtownsend/response-xml

Laravel响应类缺失的XML支持。

2.3.0 2024-03-12 15:14 UTC

This package is auto-updated.

Last update: 2024-09-12 02:48:05 UTC


README

Laravel响应类缺失的XML支持。

本包旨在与Laravel框架一起使用。

安装

通过composer安装

composer require mtownsend/response-xml

注册服务提供者

对于Laravel 5.4及以下版本,将以下行添加到您的config/app.php

/*
 * Package Service Providers...
 */
Mtownsend\ResponseXml\Providers\ResponseXmlServiceProvider::class,

对于Laravel 5.5及以上版本,该包将自动为您注册提供者。

使用Lumen

要注册服务提供者,将以下行添加到app/bootstrap/app.php

$app->register(Mtownsend\ResponseXml\Providers\ResponseXmlServiceProvider::class);

快速开始

以XML响应

$data = [
    'status' => 'success',
    'data' => [
        'first_name' => 'John',
        'last_name' => 'Smith',
    ]
];
return response()->xml($data);

// Returns:
<?xml version="1.0"?>
<response>
    <status>success</status>
    <data>
        <first_name>John</first_name>
        <last_name>Smith</last_name>
    </data>
</response>

从集合或Eloquent查询中以XML响应

您还可以传递一个要转换为XML的集合。

return response()->xml(User::all());

以现有的XML响应

如果您已经有了XML,您可以将其传递给xml方法以进行响应。

$xml = <<<XML
<?xml version="1.0"?>
<response>
    <status>success</status>
    <data>
        <first_name>John</first_name>
        <last_name>Smith</last_name>
    </data>
</response>
XML;
return response()->xml($xml);

以请求的首选格式(XML/JSON)响应

如果您希望在不编写if/else语句的情况下即时以XML或JSON响应,您可以使用->preferredFormat()方法。这将根据请求的Accept头部尝试确定请求希望以哪种格式提供服务。如果此头部不存在,则默认为JSON。注意:使用此方法时,它将自动将响应的Content-Type头部设置为与请求的Accept头部匹配。

$data = [
    'status' => 'success',
    'data' => [
        'first_name' => 'John',
        'last_name' => 'Smith',
    ]
];
return response()->preferredFormat($data);

方法和参数

响应方法

->xml($xml, $status = 200, array $headers = [], $xmlRoot = 'response', $encoding = null)

$xml参数是要转换为XML的数据(也可以是预制的XML字符串)。

$status是响应将发送的HTTP代码。

$headers是响应将返回的键/值HTTP头部数组。默认头部Content-Type: application/xml将自动应用,但可以被覆盖。

$xmlRoot将更改根XML元素。默认为response

$encoding是XML字符集编码声明字符串。默认为null

响应方法

->preferredFormat($data, $status = 200, array $headers = [], $xmlRoot = 'response', $encoding = null)

参见->xml()方法参数。

此方法与->xml()的区别在于$data可能被转换为JSON,且如果响应是JSON,则忽略$xmlRoot

目的

您是否曾希望Laravel对返回XML响应的支持与对JSON的支持一样出色?想象一下,您正在创建一个API平台,并希望包容那些更喜欢向您的应用程序发送XML请求的其他应用程序——有时原因不仅仅是偏好。如果能够像编写return response()->xml($data);一样简单地返回XML,并且它就能正常工作,那岂不是梦寐以求?现在您可以实现这一点!

本包实现了一个关键目标:在您的Laravel应用程序中,以与JSON相同的方式轻松地返回XML。

您可能感兴趣的其它包

鸣谢

测试

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

./vendor/bin/phpunit

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件