HTTP::Engine::Role::Interface - The Interface Role Definition
  package HTTP::Engine::Interface::CGI;
  use Any::Moose;
  with 'HTTP::Engine::Role::Interface';
HTTP::Engine::Role::Interface defines the role of an interface in
    HTTP::Engine.
Specifically, an Interface in HTTP::Engine needs to do at least
    two things:
  - Create a
    HTTP::Engine::Request object from the client request
 
  - If you are on a CGI environment, you need to receive all the data from
      %ENV and such. If you are running on a mod_perl
      process, you need to muck with $r.
    
In any case, you need to construct a valid
        HTTP::Engine::Request object so the application handler can do the real
        work.
   
  - Accept a
    HTTP::Engine::Response object, send it back to the client
 
  - The application handler must return an HTTP::Engine::Response object.
    
In turn, the interface needs to do whatever necessary to
        present this object to the client. In a CGI environment, you would write
        to STDOUT. In mod_perl, you need to call the appropriate
        $r->headers methods and/or
        $r->print
   
Kazuhiro Osawa and HTTP::Engine Authors