Http server

May 26, 2025 ยท View on GitHub

Version Lint Build

Http server is an express http server that exposes the functionality of the grid client over http requests.

Installation

External Package

yarn add @threefold/grid_http_server

Local Usage

  • Clone the repository
git clone https://github.com/threefoldtech/tfgrid-sdk-ts.git
  • Install it
yarn install

Configuration

Add network and account's mnemonics in config.json in server directory before running the server.

{
  "network": "<network environment dev, qa or test>",
  "mnemonic": "<your account mnemonics>",
  "storeSecret": "", // secret used for encrypting/decrypting the values in tfkvStore
  "keypairType": "sr25519" // keypair type for the account created on substrate
}

Life cycle

  • User from the outside sends an http post request(with payload) to the HTTP server.
  • Http server checks if there is a post request that its endpoint is registered on the express http server.
  • If this endpoint is registered, the http server will pick up this post request.
  • Http server starts to execute it using the Grid3 client.
  • After finishing the execution, the Http server puts the result back to the user once it's ready.

Running

Locally

yarn start

In External Package

yarn grid_http_server

You can also use another configuration file by using --config or -c option.

 yarn grid_http_server -c pathToConfigFile.json
 # or
 yarn grid_http_server --config pathToConfigFile.json

Usage

All APIs supported can be executed by sending a post request to the server. To execute a method on a module, the module name followed by the method name should be sent on the request endpoint to be like http://localhost:3000/{module}/{method} and the arguments should be sent in request's body.

There is a ping endpoint as well to make sure that the server is up and running http://localhost:3000/ping

Example

This is an example of getting a twin. Put the following content in a file test_twin.ts

import axios from "axios";

async function main() {
  const payload = { id: 1 };
  axios
    .post("http://localhost:3000/twins/get", payload)
    .then(function (response: any) {
      console.log(response);
    })
    .catch(function (error: any) {
      console.log(error.response.data);
    });
}
main();

And then run this file by yarn run ts-node --transpileOnly test_twin.ts

see more examples in modules