使用PostgREST的配置教程

使用PostgREST的配置教程

 

配置

PostgREST读取配置文件以确定有关数据库以及如何满足客户端请求的信息。该文件没有预定义的位置,您必须将文件路径指定为服务器的唯一参数:

./postgrest /path/to/postgrest.conf

配置文件必须包含一组键值对。至少您必须包括以下密钥:

# postgrest.conf

# The standard connection URI format, documented at
# https://www.postgresql.org/docs/current/static/libpq-connect.html#AEN45347
db-uri       = "postgres://user:pass@host:5432/dbname"

# The name of which database schema to expose to REST clients
db-schema    = "api"

# The database role to use when no client authentication is provided.
# Can (and should) differ from user in db-uri
db-anon-role = "anon"

在db-uri中指定的用户也称为验证者角色。有关匿名角色与身份验证者角色的更多信息,请参见角色系统概述

这是配置参数的完整列表。

NameTypeDefaultRequired
db-uriString Y
db-schemaString Y
db-anon-roleString Y
db-poolInt10 
db-pool-timeoutInt10 
db-extra-search-pathStringpublic 
server-hostString!4 
server-portInt3000 
server-unix-socketString  
server-proxy-uriString  
jwt-secretString  
jwt-audString  
secret-is-base64BoolFalse 
max-rowsInt 
pre-requestString  
app.settings.*String  
role-claim-keyString.role 
raw-media-typesString  
 

db

标准连接PostgreSQL URI格式。密码或其他字段中的符号和不寻常字符应按百分比编码,以避免解析错误。如果需要强制与数据库建立SSL连接,则可以在URI中使用sslmode,例如postgres://user:pass@host:5432/dbname?sslmode=require

当在与PostgreSQL相同的机器上运行PostgREST时,还可以使用Unix套接字和对等身份验证方法连接到数据库,以替代使用密码的TCP / IP通信和身份验证,这也可以提高性能。为此,您可以省略主机名和密码,例如postgres://user@/dbname,有关更多详细信息,请参见libpq连接字符串文档。

在较旧的系统(如Centos 6)和旧版本的libpq上,必须使用不同的db-uri语法。在这种情况下,URI是由空格分隔的键/值对(key = value)的字符串,因此上面的示例将是。"host=host user=user port=5432 dbname=dbname password=pass"

为该参数选择一个以at符号开头的值,例如@filename(例如@./configs/my-config)会将密钥从外部文件中加载出来。

db

向REST客户端公开的数据库架构。此架构中的表,视图和存储过程将获取API端点。

该模式被添加到每个请求的search_path中。

db-anon

代表未经身份验证的客户端执行命令时要使用的数据库角色。有关更多信息,请参见角色系统概述

db

在PostgREST的数据库池中保持打开状态的连接数。在此处具有足够的数量以实现最大的预期同时客户端连接可以提高性能。请注意,将其设置为高于max_connections数据库中的GUC 是没有意义的。

db-pool

空闲数据库池连接的生存时间(以秒为单位)。如果达到超时,连接将关闭。一旦新的请求到达,新的连接就会开始。

db-extra-search

要添加到每个请求的search_path的额外模式。这些模式表,视图和存储过程没有API端点,只能从db-schema内部的数据库对象引用它们。

此参数旨在使使用db-schema之外的PostgreSQL扩展(例如PostGIS)更加容易。

可以将多个模式添加到以逗号分隔的字符串中,例如。public, extensions

服务器主机

绑定PostgREST Web服务器的位置。除了常用的地址选项外,PostgREST还使用特殊含义解释这些保留的地址:

  • * -任何IPv4或IPv6主机名
  • *4 -任何IPv4或IPv6主机名,首选IPv4
  • !4 -任何IPv4主机名
  • *6 -任何IPv4或IPv6主机名,首选IPv6
  • !6 -任何IPv6主机名

服务器端口

绑定Web服务器的TCP端口。

服务器-unix

绑定PostgREST Web服务器的Unix域套接字。如果指定,则优先于server-port。例:

server-unix-socket = "/tmp/pgrst.sock"

server-proxy

覆盖在API根路径下托管的OpenAPI自我文档中使用的基本URL。使用完整的URI语法scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]。例如https://postgrest.com

{
  "swagger": "2.0",
  "info": {
    "version": "0.4.3.0",
    "title": "PostgREST API",
    "description": "This is a dynamic API generated by PostgREST"
  },
  "host": "postgrest.com:443",
  "basePath": "/",
  "schemes": [
    "https"
  ]
}

jwt

用于解码客户端提供的JWT令牌的秘密或JSON Web密钥(JWK)(或集合)。为了安全起见,密钥必须至少32个字符长。如果未指定此参数,则PostgREST拒绝身份验证请求。为此参数选择一个以at符号开头的值,例如,@filename将密钥从外部文件加载出去。这对于自动化部署很有用。请注意,任何二进制机密都必须使用base64编码。支持对称和非对称密码。有关更多信息,请参见非对称密钥

AUD 

指定JWT受众声明。如果此声明存在于客户端提供的JWT中,则必须将其设置为与JWT中相同的值,否则验证JWT将失败。

base64 

设置true为时,从派生的值jwt-secret将被视为base64编码的密码。

MAX

从视图,表或存储过程中获取PostgREST的行数的硬性限制。限制意外或恶意请求的有效负载大小。

预请求

切换客户端请求角色后立即调用的架构限定的存储过程名称。这提供了修改SQL变量或引发异常以阻止请求完成的机会。

app.settings

可以用于直接将秘密密钥作为字符串或通过OS环境变量传递的任意设置。例如:将从环境中获取,并使其可用于postgresql函数。app.settings.jwt_secret = "$(MYAPP_JWT_SECRET)"MYAPP_JWT_SECRETcurrent_setting('app.settings.jwt_secret')

角色声明密钥

role在JWT声明中指定密钥位置的JSPath DSL 。这可用于使用由Auth0,Okta或Keycloak等第三方服务提供的JWT。用法示例:

# {"postgrest":{"roles": ["other", "author"]}}
# the DSL accepts characters that are alphanumerical or one of "_$@" as keys
role-claim-key = ".postgrest.roles[1]"

# {"https://www.example.com/role": { "key": "author }}
# non-alphanumerical characters can go inside quotes(escaped in the config value)
role-claim-key = ".\"https://www.example.com/role\".key"

原始介质类型

这用于扩展PostgREST当前通过标头接受的媒体类型Accept

可以遵循与Binary Output中定义的规则相同的规则来请求这些媒体类型。

例如,下面的配置将允许您分别通过与 和进行请求来请求图像xmlAccept: image/pngAccept: text/xml

raw-media-types="image/png, text/xml"
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值