DBCore
Code generation powered by your database.
- Generate standardized REST APIs with:
- GET (one, many), POST, DELETE, PUT endpoints
- Filtering using a SQL-like DSL
- Pagination, sorting
- JWT-based authentication
- Write your own templates to generate database-driven code for any language
- MIT license
This software is in ALPHA development.
Generating a Go API
In your project root folder create a dbcore.yml :
project: $project-name
database:
dialect: postgres
# Omit if localhost
host: $host-or-ip
# Omit if 5432
port: $port
database: $database-name
username: $username
password: $password
api:
template: go
outDir: go
# e.g. "v1/", for URLs
routerPrefix: router-prefix
auth:
enabled: true
table: users
# Column for username field
username: username
# Column for password field, bcrypt hash is stored
password: password
extra:
repo: $your-repo
The dbcore.yml file controls code generation. You'll also need an app.yml file for runtime behavior:
database: dialect: postgres dsn: postgres://$username:$password@$host/$database?sslmode=disable address: :9090 session: duration: 2hr secret: my-secret-signing-key
Clone the repo and run dotnet run $path-to-your-project within the repo root.
Then go to your project directory and run go run cmd/main.go to start the server.
API Specification
Authentication
When authentication is enabled, make a JSON POST request with {"username": "$your-username", "password": "$your-password"} to /$version/session/start to generate a token. It is valid for 2 hours by default.
Passwords are stored as BCrypt hashes.
You can store this token in the au cookie or you can submit it as bearer token by setting the Authorization header to BEARER $your-token .
Example
$ curl -X POST -d '{"username": "alex", "password": "alex"}' localhost:9090/v1/session/start
{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1OTA3MjkyNjMsImlhdCI6MTU5MDcyMjA2MywibmJmIjoxNTkwNzIyMDYzLCJ1c2VybmFtZSI6InBoaWwifQ.4AAveeFRpXckn3cRFyCQew2V7jmcU4OOYH68wcv6afI"}
Get many rows from a table
Make a GET request to /$version/$table .
Query parameters
| Parameter | Definition | Example |
|---|---|---|
limit |
Number of rows to return | limit=25 |
offset |
Number of rows to skip | offset=0 |
sortColumn |
Column to sort on | sortColumn=id |
sortOrder |
Order to sort (one of asc or desc ) |
sortOrder=desc |
filter |
SQL where filter to eliminate results | filter=id>3 |
Example
$ curl 'localhost:9090/v1/users?limit=25&offset=0&sortColumn=id&sortOrder=desc&filter=id=1'
{
"total": 1,
"data": [
{
"id": 1,
"username": "alex",
"password": "<REDACTED>",
"name": "Alex"
},
]
}
Create a new row
Make a POST request to /$version/$table/new .
Example
$ curl -X POST -d '{"username": "alex", "password": "alex", "name": "Alex"}' localhost:9090/v1/users/new
{"id":1,"username":"alex","password":"<REDACTED>","name":"Alex"}
Get a row
Make a GET request to /$version/$table/$id .
This endpoint is only available if the table has a primary key.
Example
$ curl localhost:9090/v1/users/1
{"id":1,"username":"alex","password":"<REDACTED>","name":"Alex"}
Update a row
Make a PUT request to /$version/$table/$id .
This endpoint is only available if the table has a primary key.
Example
$ curl -X PUT -d '{"id": 1, "username": "alex", "password": "alex", "name": "Alex K"}' localhost:9090/v1/users/1
{"id":1,"username":"alex","password":"<REDACTED>","name":"Alex K"}
Delete a row
Make a DELETE request to /$version/$table/$id .
This endpoint is only available if the table has a primary key.
Example
$ curl -X DELETE localhost:9090/v1/users/1
以上所述就是小编给大家介绍的《Generate a Go REST API from a PostgreSQL database with pagination, sorting, filtering, and auth》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
离散数学及其应用
Kenneth H.Rosen / 机械工业出版社 / 2012-11 / 99.00元
本书是介绍离散数学理论和方法的经典教材,已经成为采用率最高的离散数学教材,被美国众多名校用作教材,获得了极大的成功。中文版也已被国内大学广泛采用为教材。作者参考使用教师和学生的反馈,并结合自身对教育的洞察,对第7版做了大量的改进,使其成为更有效的教学工具。. 本书可作为1至2个学期的离散数学课入门教材,适用于数学,计算机科学。计算机工程.信息技术等专业的学生。 本书特点 实例:书中有8......一起来看看 《离散数学及其应用》 这本书的介绍吧!