<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Aug 29, 2013 at 12:31 PM, Adam Witney <span dir="ltr">&lt;<a href="mailto:awitney@sgul.ac.uk" target="_blank">awitney@sgul.ac.uk</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im"><br>

On 28. 8. 2013 18:56, sawyer x wrote:<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br><div><div class="h5">
<br>
The way I suggest people write their website is by separating the<br>
application logic from the web layer. I usually implement an API with<br>
routes defined under MyApp/Web.pm. The rest of MyApp/ contains all the<br>
application logic that can survive and live without the web layer, if<br>
needs be.<br>
<br>
In your case, writing just the web layer would be very simple. You could<br>
then transition it to your use application, written in whatever language<br>
you want. If you write it correctly, you could switch from Dancer to a<br>
different web framework (whether in Perl or not).<br>
</div></div></blockquote>
<br>
Hi,<br>
<br>
I&#39;m interested in how exactly you write this API in the web layer, do you happen to have an example of this approach? or know of a project that uses it?<br></blockquote><div><br></div><div>I can&#39;t share any of the examples I have. They aren&#39;t open-source.<br>

</div><div>However, it&#39;s really not at all complicated.<br><br>Imagine having MyApp.pm that has:<br>use Moose; # or Moo<br></div><div>has ... <br>has ...<br><br></div><div>sub do_something {...}<br></div><div><br>and then you have MyApp/Web.pm that has:<br>

</div><div>use Dancer2;<br></div><div>my $app = MyApp-&gt;new;<br><br></div><div># define routes here<br></div><div>get &#39;/&#39; =&gt; sub { $app-&gt;do_something(...) };<br><br>-----<br><br></div><div>That way you separate the application logic from the web logic.<br>

</div></div></div></div>