Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

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

Generic API

This is a shemaless and generic api for development tests. You can create any endpoint and add json objects as you wish. The data is persisted on disk by shelve.

Run with docker (Alpine Linux based)

docker run -d --name generic-api -v `pwd`/data:/app/data -p 5000:5000 lvidarte/generic-api:latest

POST method

The header Content-Type: application/json is not necessary, the api assumes you are sending jsons.

$ curl localhost:5000/points -d '{"x": 1, "y": 2}'
{
  "_id": "1", 
  "x": 1, 
  "y": 2
}
$ curl localhost:5000/points -d '{"x": 5, "y": 10}'
{
  "_id": "2", 
  "x": 5, 
  "y": 10
}

GET method

$ curl localhost:5000/points
{
  "1": {
    "_id": "1", 
    "x": 1, 
    "y": 2
  }, 
  "2": {
    "_id": "2", 
    "x": 5, 
    "y": 10
  }
}
$ curl localhost:5000/points/1
{
  "_id": "1", 
  "x": 1, 
  "y": 2
}
$ curl localhost:5000/points/1/x
1

DELETE method

$ curl -XDELETE localhost:5000/points/1
{
  "_id": "1", 
  "x": 1, 
  "y": 2
}

Nested example

Create authors and books

$ curl localhost:5000/authors -d '{"name": "Asimov"}'
{
  "_id": "1", 
  "name": "Asimov"
}

$ curl localhost:5000/authors/1/books -d '{"title": "Nemesis", "year": 1988}'
{
  "_id": "1", 
  "title": "Nemesis", 
  "year": 1988
}

$ curl localhost:5000/authors/1/books -d '{"title": "Foundation and Earth", "year": 1987}'
{
  "_id": "2", 
  "title": "Foundation and Earth", 
  "year": 1987
}

Get the full data

$ curl localhost:5000/authors/1
{
  "_id": "1", 
  "books": {
    "1": {
      "_id": "1", 
      "title": "Nemesis", 
      "year": 1988
    }, 
    "2": {
      "_id": "2", 
      "title": "Foundation and Earth", 
      "year": 1987
    }
  }, 
  "name": "Asimov"
}

You can get only some field

$ curl localhost:5000/authors/1/books/2/title
"Foundation and Earth"

$ curl localhost:5000/authors/1/books/2/year
1987

And change any field as you wish

$ curl localhost:5000/authors/1/books/2/year -d '1986'
1986


$ curl localhost:5000/authors/1/books/2
{
  "_id": "2", 
  "title": "Foundation and Earth", 
  "year": 1986
}

PUT method

There is not PUT method, use POST instead.

Logs

$ docker logs -f generic-api 
172.17.0.1 - - [16/Jun/2017 04:50:56] "GET /points HTTP/1.1" 200 -
172.17.0.1 - - [16/Jun/2017 04:51:40] "POST /points HTTP/1.1" 201 -
172.17.0.1 - - [16/Jun/2017 04:51:55] "DELETE /points/1 HTTP/1.1" 404 -

About

Quick schemaless and generic API for development tests

Topics

Resources

License

Releases

No releases published

Packages

No packages published

Languages