[racket] Simple webserver question

From: Danny Yoo (dyoo at hashcollision.org)
Date: Wed Jul 4 22:45:23 EDT 2012

On Wed, Jul 4, 2012 at 10:34 PM, Matt Jadud <jadudm at gmail.com> wrote:
> Hi all,
> I'm trying to 1) serve static files from a directory relative to my
> script and 2) handle a single POST of some JSON. My goal is to be able
> to compile/share this when I'm done. I'd ideally like to be able to
> control the port, choose whether a browser is opened, and control the
> endpoint for the static content and servlet.

You probably do want to use the #:extra-files-path, but using
current-working-directory might not be robust.  You might use the
define-runtime-path form to get a path that's relative to the script.
For example:

(require racket/runtime-path (for-syntax racket/base))

;; htdocs is a path that's relative to this script's location.
(define-runtime-path htdocs (build-path "htdocs"))

(serve/servlet ... #:extra-files-paths (list htdocs) ...)

You might want to adjust #:servlet-path to be more discriminating;
rather than use "/", try something like "/json".  Otherwise, all your
web requests get sent over to your request handler.  That's probably
why none of the static files are being served successfully.

Posted on the users mailing list.