0.2.7 • Published 10 years ago

stub-stub v0.2.7

Weekly downloads
2
License
MIT
Repository
github
Last release
10 years ago

stub

stub-stub

npm

stub-stub is a quick and dirty solution to getting your API stubbed out quickly. You can stub out your whole API by simply placing YAML files inside a sensible directory structure.

Installation

Globally:

npm install stub-stub -g

Locally:

npm install stub-stub --save-dev

Getting started

Create an api-stubs directory inside of your project root. Here's an example directory structure:

api-stubs/
├── auth
│   └── default.yml
├── cars
│   ├── 1.yml
│   ├── 2.yml
│   ├── xyz.yml
│   └── default.yml
└── users
    ├── 1.yml
    ├── 2.yml
    ├── 3.yml
    └── default.yml

With the given stubs directory, stub-stub would create multiple endpoints available to you. Some examples include:

VerbEndpointReturns
GET/list all known resources
GET/carsjson blob for all cars
GET/cars/1json blob for car with id 1
GET/cars/xyzjson blob for car with id xyz
GET/usersjson blob for all users
GET/users/2json blob for user with id 2
POST/auth/dodefault json blob for auth

stub-stub works by creating endpoints for each YAML file nested within a given type. So for instance, a file at ./api-stubs/cars/1.yml would have a GET endpoint at /cars/1.

Any GET to a given resource extends the default.yml for the given type. You can also POST to any endpoint and receive the corresponding json blob.

Inheritance

Take for instance ./api-stubs/cars/1.yml with the following:

name: Prius
price: $20,000

as well as ./api-stubs/cars/default.yml with the following:

name: Default Car
price: $10,000
mpg: 40

A GET request to /cars/1 would return the merging of default.yml and 1.yml:

{
  "car": {
   "name":  "Prius",
   "price": "$20,000",
   "mpg":   40
  }
}

Starting stub-stub

stub-stub by default starts on port 4343. Why 4343? No idea, it just felt right at the time.

stub-stub

You can optionally run stub-stub on another port and/or from another directory.

stub-stub --port=8000 --stubs=foo

Inflection

Resources are by default pluralized/singularized depending on context using the inflect node module. So, for instance, a GET to /cars will return:

{
  "cars": [
    { "id": "1", "name": "Dodge"}
    { "id": "2", "name": "Buick" }
  ]
}

and a GET to /cars/1 would return:

{
  "car":
    {
    "id": "1",
    "name": "Dodge"
  }
}

Contributing

Fire up a development copy of stub-stub by issuing the following from the command line:

$ ./bin/cli.js

Ticket by Ryan Dell from The Noun Project

0.2.7

10 years ago

0.2.6

10 years ago

0.2.5

10 years ago

0.2.4

10 years ago

0.2.3

10 years ago

0.2.2

10 years ago

0.2.1

10 years ago

0.2.0

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago