Ich versuche eine App von Dancer zu Dancer2 zu migrieren. Mein Gedanke ist, den Code in Routen zu trennen, die mit Vorlagen und solchen, die Ajax (API) -Aufrufe sind, bedient werden.Wie kann ich Sitzungsdaten zwischen Dancer2-Apps mit verschiedenen Serialisern teilen?
Meine Basis-App ist:
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;
};
Ich dachte, dass das Routes::Templates
Paket keine Serializer haben würde und das Routes::Login
Paket würde JSON Serialisierung haben. Ich verwendete
set serializer => 'JSON';
im Routes::Login
Paket.
Allerdings möchte ich auch diese Session-Daten teilen, so dass jeder eine gemeinsame appname hat
use Dancer2 appname => 'myapp';
in jeder Datei. Und das scheint Probleme mit der Serialisierung zu haben. Die Routes::Template
Routen werden nicht korrekt zurückgegeben, da versucht wird, sie als JSON zu codieren. Hier ist der Fehler:
Failed to serialize content: hash- or arrayref expected (not a simple scalar, use allow_nonref to allow this)
ich alle Unterlagen gelesen haben, darunter diese:
- 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
Aber ich bin immer noch nicht klar, wie die Serializer ist durch Paket getrennt.
[Dancer2 :: Plugin :: SendAs] (https://metacpan.org/pod/Dancer2::Plugin::SendAs) erlaubt es Ihnen, das standardmäßige Alles-oder-Nichts-Serializer-Verhalten zu überschreiben, aber hier ist es nicht notwendig und ich denke, die Dinge sind sauberer, wenn Sie für alle Routen in einer App einen Serializer verwenden. – ThisSuitIsBlackNot
Ich habe das im Testfall arbeiten lassen und verwende es für meinen. Ich wollte hinzufügen, dass um ein Testskript zu erhalten, damit dies funktioniert, Sie sicherstellen müssen, dass Sie Cookies speichern und erneut senden, wie in [the Dancer doc zum Testen mit Cookies] gezeigt (https://metacpan.org/pod) /distribution/Dancer2/lib/Dancer2/Manual/Testing.pod#Cookies) –