小编use*_*081的帖子

如何为`map` 对象中的属性名称编写 OpenAPI 3 (Swagger) 规范?

我试图描述的 API 有一个结构,其中根对象可以包含任意数量的子对象(属性本身就是对象)。“键”或根对象中的属性是子对象的唯一标识符,值是子对象的其余数据。

{
  "child1": { ... bunch of stuff ... },
  "child2": { ... bunch of stuff ... },
  ...
}
Run Code Online (Sandbox Code Playgroud)

这可以类似地建模为数组,例如:

[
  { "id": "child1", ... bunch of stuff ... },
  { "id": "child2", ... bunch of stuff ... },
  ...
]
Run Code Online (Sandbox Code Playgroud)

但这既使识别属性在结构上变得不太清楚,并使子代 ID 之间的唯一性隐式而非显式,因此我们想要使用对象或映射。

我已经看过Model with Map/Dictionary Properties的 Swagger 文档,但这并不完全适合我的用例。写一些类似的东西:

"Parent": {
  "additionalProperties": {
    "$ref": "#/components/schemas/Child",
  }
Run Code Online (Sandbox Code Playgroud)

产生这样的东西:

API 的 Swagger 渲染

这充分传达了属性中值的描述性,但我如何记录对象中“键”的限制?理想情况下,我想说“这不仅仅是任意字符串,而是与孩子对应的 ID”。这是否以任何方式支持?

swagger swagger-editor openapi

11
推荐指数
1
解决办法
8277
查看次数

受限制的Web应用程序的PostgreSQL权限

目标

创建一个有三个用户的数据库并限制他们的权限(我只是大声思考,所以我的用户分离也可以纠正):

  1. 超级用户 - 此用户允许最初的数据库配置.创建应用程序数据库,创建其他用户,设置其权限.默认postgres超级用户适合我,所以这一个完成.
  2. 管理员 - 此用户只能访问在配置期间创建的数据库.管理员可以CRUD所有表中的所有数据,也可以CRUD表等"仅用于此数据库的超级用户"类型的情况.在更新应用程序时,管理员是自动化工具用于处理数据库迁移的用户.
  3. 应用程序用户 - 此用户最终是支持Web应用程序功能的用户.请注意,这与网页上的用户无关 - 这是服务器用来运行查询,插入和删除数据的用户.我明确地希望这个用户能够修改任何东西的权限,也不希望创建/销毁表或索引或任何结构.

我试过的

首先,看看(通常很棒的)PostgreSQL文档,Grant上页面几乎让我眼花缭乱.花了几个小时阅读有关PostgreSQL角色和特权的消息后,我常常感到困惑.我认为通过更多的工作,我将能够确定我想要的管理员用户,但我非常坚持"应用程序用户".我已经知道了这一点(命名和密码都只是占位符):

$ psql -U postgres
postgres=# CREATE USER "app-admin" WITH PASSWORD 'password';
CREATE ROLE
postgres=# CREATE USER "app-user" WITH PASSWORD 'password';
CREATE ROLE
postgres=# CREATE DATABASE "test-database" WITH OWNER "app-admin";
CREATE DATABASE
postgres=# \c "test-database"
You are now connected to database "test-database" as user "postgres".
test-database=# DROP SCHEMA "public";
DROP SCHEMA
test-database=# CREATE SCHEMA "app" AUTHORIZATION …
Run Code Online (Sandbox Code Playgroud)

database postgresql privileges web-applications least-privilege

10
推荐指数
1
解决办法
2254
查看次数

域名“.localdomain”的意义是什么?

nslookup使用显示 <host>.localdomain查找本地域名。同样,如果我使用 nslookup 并检查 <host>.localdomain,它会在 Windows 和 Ubuntu 中解析为预期值。

“.localdomain”的意义是什么?它为什么会出现、为什么会起作用以及它可以信赖吗?是否在标准或其他内容中指定/是否特定于操作系统或制造商?它似乎是与 等效的域localhost,但我在任何地方都找不到它的记录。

查找本地主机的示例:

> nslookup me-fractal
Server:  setup.ubnt.com
Address:  192.168.1.1

Name:    me-fractal.localdomain
Address:  192.168.1.77
Run Code Online (Sandbox Code Playgroud)

示例显示localdomain实际上意味着什么:

$ nslookup testhost.localdomain
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   testhost.localdomain
Address: 192.168.1.198
Run Code Online (Sandbox Code Playgroud)

而任意值无法解析:

$ nslookup testhost.othervalue
Server:         127.0.0.53
Address:        127.0.0.53#53

** server can't find testhost.othervalue: NXDOMAIN
Run Code Online (Sandbox Code Playgroud)

我认为值得注意的是,该值不会出现在https://serverfault.com/a/937808(或其他答案)中。

networking lan localhost domain-name

6
推荐指数
0
解决办法
4297
查看次数

CalendarContract.Instances.query()searchQuery

我正在尝试确定用户日历中是否存在给定事件,其中相等性由所有匹配的开始时间,结束时间,标题和位置确定.

文件说:

public static final Cursor query (ContentResolver cr, String[] projection, long begin, long end, String searchQuery)
Run Code Online (Sandbox Code Playgroud)

searchQuery的位置是:

searchQuery A string of space separated search terms. Segments enclosed by double quotes will be treated as a single term.
Run Code Online (Sandbox Code Playgroud)

我的代码大致是这样的:

long startTime = eventStartTime;
long endTime = eventEndTime;

public static final String[] EVENT_INSTANCE_PROJECTION = new String[] {
    Instances._ID,
    Instances.BEGIN,
    Instances.END,
    Instances.EVENT_ID,
    Instances.TITLE,
    Instances.EVENT_LOCATION
};

Cursor cursor = Instances.query(activity.getContentResolver(), EVENT_INSTANCE_PROJECTION, startTime, endTime, queryString);
Run Code Online (Sandbox Code Playgroud)

如果没有queryString,则返回该时隙中的事件.queryString应该是什么?特别是,如何使用此调用仅返回具有给定标题的该时间范围内的事件,即WHERE Instances.TITLE ='EventTitle'.或者这甚至是正确的使用方式来做到这一点?我对这个命令所期望的格式感到困惑.

编辑

看起来查询只是追加到路径,所以一个例子是:

content://com.android.calendar/instances/search/1402678800000/1402704000000/
Run Code Online (Sandbox Code Playgroud)

数字是开始日期和结束日期,以毫秒为单位.

mysql android android-intent android-cursor

5
推荐指数
0
解决办法
795
查看次数