Skip to content

UW-Macrostrat/node-api-template

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
v1
 
 
 
 
 
 
 
 
 
 
 
 

node-api-template

A mildly opinionated, RESTish API template built with Node.js

About

Designed to minimally abstract database logic, this template scaffolds common API design decisions and allows you to quickly distribute your data in common formats, such as JSON and CSV. This is meant to serve as a boilerplate for quickly establishing an API for an existing database system. We have succesfully and deployed this API framework on top of MariaDB, Postgres, and MongoDB.

While researching API design with Node.js, there were many questions, such as versioning and handling of relational databases, that did not have obvious answers. This template is one opinion on a set of answers to many common API design questions.

Features

  • Versioning
  • Support for various data stores
  • Tests
  • Flexibility
  • Extensibility
  • The Javascript you know and love
  • Minimal abstractions

Organization

Each version of the API functions as a self-contained module, and therefore has its own package.json, README, and dependencies.

Install

curl -LOk https://github.com/UW-Macrostrat/node-api-template/archive/master.zip
unzip master.zip
cd node-api-template-master
npm install

If using MySQL or Postgres, you will need to update rename vx/credentials.example.js to vx/credentials.js and input your credentials.

Start

npm start

The API runs on port 5555 by default, and the root can be accessed by navigating to http://localhost:5555/api or http://localhost:5555/api/vX in your browser.

Testing

The tests for each version of the API can be found in vx/test, and each route has its own test file. Functions used for testing the validity of each response can be found in validators.js, and various settings in settings.js.

To run the tests:

npm test

Running in production

Both forever and pm2 are great for keeping the API alive (and load balancing in the case of pm2).

Author

John J Czaplewski, with inspiration and assistance from Puneet Kishor and Shanan Peters.

Funding

Development supported by NSF CAREER EAR-1150082 and NSF ICER-1440312.

License

CC-BY for all code unique to this API.

About

A mildly opinionated, RESTish API template

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published