zoukankan      html  css  js  c++  java
  • 【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以上)

    PostgREST 0.4.1.0

    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"
      }
    ]

    至此项目搭建测试完成。

    参考:
    PostgreSQL9.4官方Reference
    PostgreSQL9.5.3中文文档
    PostgREST官方Reference

  • 相关阅读:
    logstash收集nginx日志
    logstash收集java日志,多行合并成一行
    一个配置文件收集多个日志-if根据type类型判断
    CentOS 7 kibana安装配置
    CentOS7 logstash配置部署
    Centos7 Elasticsearch部署
    awk命令
    top命令
    java中的getClass()函数
    java容器
  • 原文地址:https://www.cnblogs.com/cunchen/p/9464115.html
Copyright © 2011-2022 走看看