gpt4 book ai didi

perl - 如何防止 perl dancer 应用程序中一条路线的序列化?

转载 作者:行者123 更新时间:2023-12-04 18:40:38 25 4
gpt4 key购买 nike

我有一个 perl dancer 应用程序(提供一个 rest api),它可以很好地与 JSON(反)序列化配合使用。现在我需要一个额外的特殊路由,它提供一个(动态创建的)csv 文件供下载。

这里是示例代码:

#!/usr/bin/env perl
use Dancer2;
set serializer => 'JSON';

get '/normal' => sub {
{ 'I say ' => 'the json serializer works' };
};

get '/download' => sub {
content_type 'text/csv';
return generateCsv();
};

sub generateCsv {
return '
1,2,3
4,5,6
';
}

dance;

发送给客户端的响应没有正文,只有一个 http-header(具有正确的内容类型)

$> curl  -I  http://localhost:3000/download
HTTP/1.0 200 OK
Date: Fri, 23 Mar 2018 10:10:14 GMT
Server: Perl Dancer2 0.205002
Server: Perl Dancer2 0.205002
Content-Length: 0
Content-Type: text/csv

舞者序列化器对此不满意:

Failed to serialize content: hash- or arrayref expected 
(not a simple scalar, use allow_nonref to allow this)
at /usr/local/share/perl/5.22.1/Dancer2/Serializer/JSON.pm line 40.
in /usr/local/share/perl/5.22.1/Dancer2/Core/Response.pm

我在 Dancer 文档或源代码中找不到关于 allow_nonref 的任何内容。

有人给我提示吗?

最佳答案

使用send_as:

get '/download' => sub {
send_as Mutable => generateCsv();
};

关于perl - 如何防止 perl dancer 应用程序中一条路线的序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49447363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com