neofs-rest-gw

module
v0.8.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 25, 2024 License: GPL-3.0

README

NeoFS

REST server to interact with NeoFS.


Report GitHub release (latest SemVer) License

neofs-rest-gw

NeoFS REST Gateway bridges NeoFS internal protocol and REST API server.

Installation

Building

Before building make sure you have the following tools:

  • go
  • make
  • git
  • curl
  • docker

First clone this repository:

$ git clone https://github.com/nspcc-dev/neofs-rest-gw

Then run make to build bin/neofs-rest-gw binary:

$ make

Or you can build it using docker:

$ make docker/all
Generate openapi boilerplate code

If you change the spec file you have to re-generate server code.

You have several approaches:

  1. Run make. It automatically downloads oapi-codegen and generates boilerplate.
$ make
  1. Generate code separately:
$ make generate-server
Other targets

Notable make targets:

dep             Check and ensure dependencies
image           Build clean docker image
image-dirty     Build dirty docker image with host-built binaries
formats         Run all code formatters
lint            Run linters
version         Show current version
generate-server Generate boilerplate by spec
Docker

Or you can also use a Docker image provided for released (and occasionally unreleased) versions of gateway (:latest points to the latest stable release).

Execution

REST gateway itself is not a NeoFS node, so to access NeoFS it uses node's gRPC interface and you need to provide some node that it will connect to. This can be done either via -p parameter or via REST_GW_POOL_PEERS_<N>_ADDRESS and REST_GW_POOL_PEERS_<N>_WEIGHT environment variables (the gate supports multiple NeoFS nodes with weighted load balancing).

If you're launching REST gateway in bundle with neofs-dev-env, you can get an IP address of the node in output of make hosts command (with s0*.neofs.devenv name).

These two commands are functionally equivalent, they run the gate with one backend node (and otherwise default settings):

$ neofs-rest-gw -p 192.168.130.72:8080
$ REST_GW_POOL_PEERS_0_ADDRESS=192.168.130.72:8080 neofs-rest-gw

It's also possible to specify uri scheme (grpc or grpcs) when using -p:

$ neofs-rest-gw -p grpc://192.168.130.72:8080
$ REST_GW_POOL_PEERS_0_ADDRESS=grpcs://192.168.130.72:8080 neofs-rest-gw

Configuration

In general, everything available as CLI parameter can also be specified via environment variables, so they're not specifically mentioned in most cases (see --help also). If you prefer a config file you can use it in yaml format. See config and defaults for example.

$ neofs-rest-gw --config config.yaml

Docs

You can see swagger specification using the following url (suppose you ran rest-gw on localhost:8090):

Also, when you run rest-gw, you will see a line similar to:

...
2024/02/12 13:21:31 Serving neofs rest gw at http://192.168.130.72:8080

You will find an auto-redirect to the specification page via this link.

Migrating from HTTP gateway

See docs/migration-from-http.md.

Contributing

Feel free to contribute to this project after reading the contributing guidelines.

Before starting to work on a certain topic, create a new issue first, describing the feature/topic you are going to implement.

License

This project is licensed under the GNU GPL v3 License - see the LICENSE file for details.

Directories

Path Synopsis
cmd
apiserver
Package apiserver provides primitives to interact with the openapi HTTP API.
Package apiserver provides primitives to interact with the openapi HTTP API.
internal
static

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL