spineapi

Access your python functions through HTTP requests.


License
MIT
Install
pip install spineapi==0.1.0

Documentation

Spine API

Access your python functions through HTTP requests.

It is simple, clean, and easy to use. It works with jupyter notebooks too.

1. Setup your api server

Prerequisites

  1. Make sure your server is accessible through port 3000
  2. Have Node.js installed on your server

Installation

$ git clone https://github.com/spineapi/spine-api
$ cd spine-api/server
$ npm install

Run server

$ node server.js

Now you can access your server through http://YOUR_SERVER_IP:3000. Copy the passcode.

Installation

$ pip instal spineapi

Connect your python script to the server

1. Import the library

from spineapi import Connection

2. Define your function

def hello_function (input):
  # ...
  # do something
  # ...
  return output

3. Specify name and description to initialize your project

spine_connection = Connection(
  project_path="hello_project",
  project_name="My first project",
  description="Arithmetic operations",
  base_url="http://localhost:3000",
  passcode="xxxx-xxxx-xxxx-xxxxx",
  author="", # Optional
  link="" # Optional
)

4. Register your function(s)

spine_connection.register_function(
  pathname='hello_function',
  function=hello_function,
  # ============ Optional ==================
  # Set True if you want to protect this API
  requiresAuth=False,
  authToken="xxx",
  # ========================================
)

The function will be accessible through /api/hello_project/hello_function

5. Run

spine_connection.run()

That's it! You can now communicate with your ML model through HTTP post requests.

6. Send requests

Note You have to first run JSON.stringify(input) for the request data.

const data = {
  input: JSON.stringify(YOUR_INPUT)
  // ============ Optional ==================
  // Required if the API is protected
  authToken: "xxx",
  // ========================================
}

Post request body to the endpoint.

const url = 'http://localhost:3000/api/hello_project/hello_function';

fetch(
  url,
  {
    method: 'POST',
    body: JSON.stringify(data),
    headers: new Headers({ 'Content-Type': 'application/json' })
  }
)
.then(res => res.json())
.catch(error => console.error('Error:', error))
.then(response => console.log('Success:', response));

License

MIT