Serving static files with restify

According to my current restify version (v5.2.0)

the serveStatic has been moved into plugins, so the code would be like this

server.get(
  /\/(.*)?.*/,
  restify.plugins.serveStatic({
    directory: './static',
  })
)

Syntax above will serve your static files on folder static. So you can get the static file like http://yoursite.com/awesome-photo.jpg

For some reason if you want to serve the static files under specific path like this http://yoursite.com/assets/awesome-photo.jpg for example.

The code should be refactored into this

server.get(
  /\/assets\/(.*)?.*/,
  restify.plugins.serveStatic({
    directory: `${app_root}/static`,
    appendRequestPath: false
  })
)

The option appendRequestPath: false above means we dont include assets path into the file name


From the documentation:

server.get(/\/docs\/public\/?.*/, restify.plugins.serveStatic({
  directory: './public'
}));

But this will search files in the ./public/docs/public/ directory.
If you want to not append request path to it, use appendRequestPath: false option.

I prefer to use __dirname key here:

server.get(/\/public\/?.*/, restify.plugins.serveStatic({
    directory: __dirname 
}));

The value of __dirname is equal to script file directory path, which assumed to be also a folder, where is public directory.

And now we map all /public/.* urls to ./public/ directory.


Now also exists serveStaticFiles plugin:

server.get('/public/*', // don't forget the `/*`
     restify.plugins.serveStaticFiles('./doc/v1')
); // GET /public/index.html -> ./doc/v1/index.html file