【问题标题】:Dancer unique request ID舞者唯一请求 ID
【发布时间】:2016-05-08 09:45:20
【问题描述】:

Dancer 中是否有任何唯一的请求 ID?

Apache 有 mod_unique_id:http://httpd.apache.org/docs/current/mod/mod_unique_id.html

PSGI/Plack 有一个中间件模块:http://search.cpan.org/~bayashi/Plack-Middleware-RequestId-0.02/lib/Plack/Middleware/RequestId.pm

但是我错过了 Dancer 中的原生内容吗?

【问题讨论】:

  • 你绝对可以在你的 Dancer 程序前面添加中间件。问题出在哪里?
  • 它不是 Debian 软件包,依赖于 Dancer 应用程序通过 Plack 运行。
  • Dancer::Request object has an id property 似乎是一个自动递增的数字。我会尝试如何使用它。
  • Plack 将用于生产,但 Dancer 网络服务器更适合开发。 Data::UUID 实际上声称:UUID 的长度为 128 位,并且保证与 3400 CE 之前生成的所有其他 UUID/GUID 不同。 我添加了一个 before 触发器。 var request_id => encode_base64url(Data::UUID->new->create_bin);
  • 写下来作为答案。

标签: perl dancer plack psgi


【解决方案1】:

当我需要与 Mojolicious 一起使用的唯一 ID 时,我使用了 Data::UUID,它生成符合 RFC 4122 的长(128 位)数字

如果没有更清楚地了解您的用例,我就不能再具体了,但这似乎很好用:

#!/usr/bin/env perl

use strict;
use warnings;

use Data::UUID;

my $gen = Data::UUID -> new();

my $binary_uuid = $gen -> create ;

print $gen -> to_string ( $binary_uuid ),"\n";
print $gen -> to_hexstring ( $binary_uuid ),"\n";
print $gen -> to_b64string ( $binary_uuid ),"\n";

您可以选择输出格式。如果它对您的应用程序有用,您可以直接创建,例如:

my $gen = Data::UUID -> new();
my $uuid = $gen -> create_str ;
print $uuid, "\n";
#reformat output
print $gen -> to_hexstring ( $uuid ),"\n";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多