postgrest 迁移mysql_【PostgREST 基本教程(一)】 PostgREST快速搭建

PostgREST 基本教程

PostgREST是一个可以直接将你的PostgreSQL数据库直接提供RESTful API 的稳定WEB服务。数据库结构和约束决定API的端点和操作。

使用PostgREST可以替代手动的CRUD开发。自定义的API服务经常遇到很多问题。人工编写业务逻辑经常会导致重复,忽略或者绕过数据库数据结构。对象关系映射这种抽象会导致代码慢。PostgREST的核心思想是:数据为本。

PostgREST技术优势

声明式编程

依托于PostgreSQL,自动实现条件查询和访问性控制。

无需抽象化

无需ORM,无需手动的CRUD开发。

关系模型

1970年,E. F. Codd在他的文章“大型共享数据库数据关系模型”中批评了当时主导的数据库层次模型。文章揭示了分层数据库和嵌套http路由之间的惊人相似性。使用PostgREST,我们尝试使用灵活的过滤和嵌入,而不是嵌套路由。

一键式开发

访问性控制方面可以与Nignx配合

开源项目

完全开源

PostgREST快速搭建教程

基本环境

PostgreSQL 9.4(官方建议9.3以上,这里建议9.4以上)

Ubuntu 14.04.5 LTS

安装PostgreSQL

PostgreSQL安装需要更新PostgreSQL软件版本

创建文件 /etc/apt/sources.list.d/pgdg.list

ubuntu 12.04

deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main

ubuntu 14.04

deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main

ubuntu 16.04

deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main

执行更新列表操作

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \

sudo apt-key add -

sudo apt-get update

安装

sudo apt-get install postgresql-9.4 postgresql-contrib-9.4 postgresql-9.4-pgmp

切换postgresql内置管理员,创建testdb数据库、testuser用户

sudo su postgres

createuser testuser

createdb testdb

psql

安装成功提示

psql (9.4.12)

Type "help" for help.

设置testuser密码

将testdb 权限赋给testuser

ALTER USER testuser PASSWORD '****';

ALTER DATABASE testdb OWNER TO testuser;

GRANT ALL PRIVILEGES ON DATABASE testdb TO testuser;L

退出连接

\q

切换testuser连接testdb数据库

psql -U testuser -d testdb -h 127.0.0.1 -p 5432

创建schema和数据表schema.infos

CREATE SCHEMA modules;

CREATE TABLE modules.infos(

m_id SERIAL PRIMARY KEY ,

s_id INTEGER NOT NULL ,

m_info VARCHAR(80) NOT NULL ,

code INTEGER ,

remark VARCHAR(80)

);

到此postgreSQL安装完毕

安装Postgrest

下载Postgrest 及安装

sudo mkdir /opt/softwares

sudo mkdir /opt/modules

cd /opt/softwares/

sudo wget https://github.com/begriffs/postgrest/releases/download/v0.4.1.0/postgrest-0.4.1.0-ubuntu.tar.xz

sudo mkdir ../modules/postgrest

sudo tar -xvf postgrest-0.4.1.0-ubuntu.tar.xz -C ../modules/postgrest

sudo ../modules/postgrest/postgrest

执行之后看到提示

db-uri = "postgres://user:pass@localhost:5432/dbname"

db-schema = "public"

db-anon-role = "postgres"

db-pool = 10

表示配置成功,接下来配置配置文件

sudo mkdir /opt/modules/postgrest/conf

sudo vim /opt/modules/postgrest/conf/default.conf

配置文件内容为

# postgrest.conf

# The standard connection URI format, documented at

# https://www.postgresql.org/docs/current/static/libpq-connect.html#AEN45347

db-uri = "postgres://testuser:123@127.0.0.1:5432/testdb"

# The name of which database schema to expose to REST clients

db-schema = "modules"

# The database role to use when no client authentication is provided.

# Can (and probably should) differ from user in db-uri

db-anon-role = "testuser"

启动postgrest用特定配置文件

sudo /opt/modules/postgrest/postgrest /opt/modules/postgrest/conf/default.conf

此时启动,日志直接输出,如果停止输入则 进程停止。

调整后台运行及输入到日志文件,日志文件应保存在当前用户空间中

sudo nohup /opt/modules/postgrest/postgrest /opt/modules/postgrest/conf/default.conf>~/postgrest.log &

测试

Client/Postman请求

GET uri:3000 HTTP 1.1

结果如下

{

"swagger": "2.0",

"info":{

"version": "0.4.1.0",

"title": "PostgREST API",

"description": "This is a dynamic API generated by PostgREST"

},

"host": "0.0.0.0:3000",

"basePath": "/",

"schemes":[

"http"

],

"paths":{

"/":{

"get":{

"tags":["/"],

"produces":["application/openapi+json", "application/json"],

"responses":{"200":{"description": "OK" }}

}

},

"/infos":{"get":{"tags":["infos" ], "produces":["application/json", "application/vnd.pgrst.object+json",…}

},

"definitions":{

"infos":{

"properties":{"m_id":{"format": "integer", "type": "integer" }, "s_id":{"format": "integer",…},

"type": "object"

}

}

}

测试infos表

创建

POST uri/infos:3000 HTTP 1.1

BODY:

{

"s_id": 1,

"m_info": "test1",

"code": 1,

"remark": "remark1"}

Resposne:201 create

查询

POST uri/infos:3000 HTTP 1.1

[

{

"m_id": 1,

"s_id": 1,

"m_info": "test1",

"code": 1,

"remark": "remark1"}

]

至此项目搭建测试完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值