Sign inSign up

restgo/rest

By restgo

•Updated 12 months ago

Rest serves a fully RESTful API from any SQL database.

Image
1

1.4K

restgo/rest repository overview

⁠Rest

ci codecov

Rest serves a fully RESTful API from any SQL database, PostgreSQL, MySQL, and SQLite are supported for now.

Visit https://rest-go.com⁠ for the full documentation, examples, and guides.

⁠Getting Started

⁠Start with Docker

run the server and connect to an existing database

# connect to postgres
docker run -p 3000:3000 restgo/rest -db.url "postgres://user:passwd@localhost:5432/db"

# connect to sqlite file with volume
docker run -p 3000:3000 -v $(pwd):/data restgo/rest -db.url "sqlite:///data/my.db"
⁠Use API

Assume there is a todos table in the database with id, and title fields:

# Create a todo item
curl -XPOST "localhost:3000/todos" -d '{"title": "setup api server", "done": false}'

# Read
curl -XGET "localhost:3000/todos/1"

# Update
curl -XPUT "localhost:3000/todos/1" -d '{"title": "setup api server", "done": true}'

# Delete
curl -XDELETE "localhost:3000/todos/1"

⁠Use the binary

⁠Precompiled binaries

Precompiled binaries for released versions are available on the Releases page⁠, download it to your local machine, and running it directly is the fastest way to use Rest.

⁠Go install

If you are familiar with Golang, you can use go install

go install github.com/rest-go/rest
⁠Run server
rest -db.url "mysql://username:password@tcp(localhost:3306)/db"

⁠Use it as a Go library

It also works to embed the rest server into an existing Go HTTP server

go get github.com/rest-go/rest
package main

import (
	"log"
	"net/http"

	"github.com/rest-go/rest/pkg/server"
)

func main() {
	h := server.New(&server.DBConfig{URL: "sqlite://my.db"}, server.Prefix("/admin"))
	http.Handle("/admin/", h)
	log.Fatal(http.ListenAndServe(":3001", nil))
}

⁠Features

  • CRUD
  • Page
  • operators (eq, lt, gt, etc.)
  • select fields
  • order by
  • count
  • json
  • Authentication and Authorization

⁠Road map

  • Resource Embedding(one-to-one, one-to-many)
  • Logical operators(and, or)
  • Open API document

Tag summary

Content type

Image

Digest

sha256:b102074f6…

Size

60.7 MB

Last updated

12 months ago

docker pull restgo/rest