gpt4 book ai didi

perl - 如何在 Perl 中实现 RESTful API?

转载 作者:行者123 更新时间:2023-12-02 01:11:09 27 4
gpt4 key购买 nike

我正在尝试在 Perl 中实现 RESTful API。我当前的想法是简单地使用正则表达式解析 path_info,然后将请求分派(dispatch)到适当的子例程,然后该子例程将吐出所请求资源的 JSON、XML 甚至 XHTML。

例如,要检索有关用户 1234 的信息,RESTful 客户端应在以下位置找到它:

<强> http://example.com/model.pl/users/1234

下面是我第一次尝试实现 RESTful API 的框架代码:

model.pl:

#!/usr/bin/perl -w
use strict;
use CGI;

my $q = CGI->new();

print $q->header('text/html');

my $restfuluri = $q->path_info;

if ($restfuluri =~ /^\/(questions)\/([1-9]+$)/) { questions($1, $2); }
elsif ($restfuluri =~ /^\/(users)\/([1-9]+$)/) { users($1, $2); }


sub questions
{
my $object = shift;
my $value = shift;

#This is a stub, spits out JSON or XML when implemented.
print $q->p("GET question : $object -> $value");
}

sub users
{
my $object = shift;
my $value = shift;

#This is a stub, spits out JSON or XML when implemented.
print $q->p("GET user: $object -> $value");
}

在继续之前,我想听听经验丰富的 Perl 黑客的意见,我的基本想法是否正确,以及这种方法在性能方面是否存在任何严重缺陷。

我可以想象,一段时间后,if/else block 会变得非常大。

期待听到您的意见,以使此代码变得更好。

最佳答案

对于轻量级 REST API,我会考虑 Mojolicious。根据我的经验,请求路由非常简单,内置的 JSON 渲染器和用户代理使简单的 REST API 的开发非常简单。

如果您的应用程序相对较小,则 Mojo::Lite可能适合您的要求。例如,您可以执行以下操作:

use Mojolicious::Lite;

get '/questions/(:question_id)' => sub {
my $self = shift;
my $result = {};
# do stuff with $result based on $self->stash('question_id')
return $self->render_json($result)
}

app->start;

关于perl - 如何在 Perl 中实现 RESTful API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1259135/

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