私はDancerからDancer2にアプリを移行しようとしています。私の考えは、コードをAjax(API)呼び出しであるものとテンプレートで処理される経路に分けることです。Dancer2アプリと異なるシリアライザ間でセッションデータを共有するにはどうすればよいですか?
マイベースアプリがある:私はRoutes::Templates
パッケージがどのシリアライザを持たないだろうとRoutes::Login
パッケージには、JSONのシリアル化を持っているだろうと考えていた
use strict;
use warnings;
use FindBin;
use Plack::Builder;
use Routes::Templates;
use Routes::Login;
builder {
mount '/' => Routes::Templates->to_app;
mount '/api' => Routes::Login->to_app;
};
。私は
set serializer => 'JSON';
をRoutes::Login
パッケージで使用しました。
はしかし、私はまた、それぞれがそれぞれのファイルに共通appnameの
use Dancer2 appname => 'myapp';
を持っているように、これらは、セッションデータを共有したいです。そして、それはシリアル化の問題に遭遇するように見えます。 Routes::Template
のルートは、JSONとしてエンコードしようとしているため正しく返されません。ここではエラーがあります:私はこれらを含め、すべてのドキュメント、読んだ
Failed to serialize content: hash- or arrayref expected (not a simple scalar, use allow_nonref to allow this)
:
- How can I use Dancer2::Plugin::Database when my code is split into multiple files?
- https://github.com/wyoung/advent-calendar/tree/master/danceradvent/public/articles/2015
をしかし、私はどのようにシリアライザにはまだ明確ではありませんよパッケージで区切られています。
[Dancer2 :: Plugin :: SendAs](https://metacpan.org/pod/Dancer2::Plugin::SendAs)では、デフォルトの全部または無しのシリアライザの動作をオーバーライドできますが、ここでは必要ありませんあなたがアプリ内のすべてのルートに対してシリアライザを1つ使用すると、物事はより洗練されたものになると思います。 – ThisSuitIsBlackNot
私はこれをテストケースで動作させ、それを私のものに適用しています。私はこれを追加して、これを動作させるためのテストスクリプトを入手したかったので、[クッキーを使ったテストに関するダンサーの文書](https://metacpan.org/pod)に示されているように、クッキーと再送信を保存する必要があります/distribution/Dancer2/lib/Dancer2/Manual/Testing.pod#Cookies) –