earthit / cmip-rest
集合修饰符-ID-属性REST框架
Requires
- php: >=8.1
- earthit/dbc: ^2.0.1
- earthit/php-common: ^2.0.2
- earthit/schema: ^2.0.1
- earthit/storage: ^2.0.1
Requires (Dev)
- doctrine/dbal: ~3.7.2
- phpunit/phpunit: ^10.5.5
- dev-master
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 0.16.22
- 0.16.21
- 0.16.20
- 0.16.19
- 0.16.18
- 0.16.17
- 0.16.16
- 0.16.15
- 0.16.14
- 0.16.13
- 0.16.12
- 0.16.11
- 0.16.10
- 0.16.9
- 0.16.8
- 0.16.7
- 0.16.6
- 0.16.5
- 0.16.4
- 0.16.3
- 0.16.2
- 0.16.1
- 0.16.0
- 0.15.1
- 0.15.0
- 0.14.1
- 0.14.0
- 0.13.1
- 0.13.0
- 0.12.0
- 0.11.6
- 0.11.5
- 0.11.4
- 0.11.3
- 0.11.2
- 0.11.0
- 0.10.2
- 0.10.1
- 0.10.0
- 0.9.3
- 0.9.2
- 0.9.1
- 0.9.0
- 0.8.1
- 0.8.0
- 0.7.2
- 0.7.1
- 0.7.0
- 0.6.23
- 0.6.22
- 0.6.21
- 0.6.20
- 0.6.19
- 0.6.18
- 0.6.17
- 0.6.16
- 0.6.15
- 0.6.14
- 0.6.13
- 0.6.12
- 0.6.11
- 0.6.10
- 0.6.9
- 0.6.8
- 0.6.7
- 0.6.6
- 0.6.5
- 0.6.4
- 0.6.3
- 0.6.2
- 0.6.1
- 0.6.0
- 0.5.0
- 0.4.0
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3.0
- 0.2.0
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- 0.0.103
- 0.0.102
- 0.0.101
- 0.0.100
- 0.0.94
- 0.0.93
- 0.0.92
- 0.0.91
- 0.0.90
- 0.0.84
- 0.0.83
- 0.0.82
- 0.0.81
- 0.0.80
- 0.0.77
- 0.0.76
- 0.0.75
- 0.0.74
- 0.0.73
- 0.0.72
- 0.0.71
- 0.0.70
- 0.0.65
- 0.0.64
- 0.0.63
- 0.0.62
- 0.0.61
- 0.0.60
- 0.0.51
- 0.0.50
- 0.0.41
- 0.0.40
- 0.0.39
- 0.0.38
- 0.0.37
- 0.0.36
- 0.0.35
- 0.0.34
- 0.0.33
- 0.0.32
- 0.0.31
- 0.0.30
- 0.0.22
- 0.0.21
- 0.0.20
- 0.0.19
- 0.0.18
- 0.0.17
- 0.0.16
- 0.0.15
- 0.0.14
- 0.0.13
- 0.0.12
- 0.0.11
- 0.0.10
- 0.0.9
- 0.0.8
- 0.0.7
- 0.0.6
- 0.0.5
- 0.0.4
- 0.0.3
- 0.0.2
- 0.0.1
- dev-jao-empty-array
This package is auto-updated.
Last update: 2024-09-19 00:21:55 UTC
README
CMIP REST
使用模式定义处理CMIP风格的(见下文)REST请求。
CMIP是什么鬼
REST服务的约定。
URL形式为/<collection>[;<modifiers>][/<identifier>[/<property>]]
,因此称为'CMIP'。
它还支持一些其他风格,将它们映射到相同的基本操作。
有五个基本操作:搜索、获取、发布、放置、修补、删除。
- GET
/<collection>[;<modifiers>][?<filter>]
返回集合中对象的列表。返回的确切子集由<filter>
(见'集合过滤器')确定,每个对象如何表示由<modifiers>
(见'记录修饰符')确定。 - GET
/<collection>[;<modifiers>]/<id>
返回由id标识的集合中的单个对象。 - POST
/<collection>
将新记录添加到集合中。新记录作为请求中的JSON编码列表提供。如果POST的条目包含主键,它们可能与现有条目冲突,在这种情况下,这些条目将像对那些条目执行修补操作一样更新。 - PUT
/<collection>/<id>
使用请求内容中提供的JSON数据替换记录。未提供值的字段将重置为其默认值。 - PATCH
/<collection>/<id>
使用请求内容中提供的JSON数据更新记录。未明确提到的字段保留其旧值。 - DELETE
/<collection>/<id>
删除记录。 - DELETE
/<collection>?<filters>
删除匹配过滤器的记录。
记录修饰符
修饰符指示如何构建结果对象。`with`修饰符是一个以逗号分隔的列表,指示应与每个记录一起返回哪些相关对象。例如,路径`/authors;with=books`表示返回与每个作者记录一起返回的书籍列表,而路径`/books;with=author,publisher`表示与每个书籍记录一起返回单个作者和出版社。
可以使用点来分隔路径组件以请求额外的嵌套级别。例如,`/authors;with=books.publisher.postalAddress`获取作者列表,每个作者都包含一个包含所有书籍的列表,每个书籍都包含一个带有'postalAddress'子记录的'publisher'记录。生成的JSON可能看起来像这样:
[
{
"id": 154,
"name": "Some Author",
"books": [
{
"id": 301,
"title": "A Book Containing Words",
"publisher": {
"id": 4,
"name": "Some Book Publishing Company",
"postalAddress": {
"streetAddress1": "450 Some Street",
"localityName": "Someville",
"regionCode": "SC",
"postalCode": "12345"
"countryCode": "USA",
}
}
},
...more book records maybe go here...
]
},
...more author records maybe go here...
]
集合过滤器
除少数保留参数外,集合GET请求的查询参数对应于集合中条目的字段。
保留参数是
orderBy=[+-]<fieldName>...
- 指示结果的排序顺序limit=[<skip>,]<count>
- 指示要跳过和包含的结果集的行数
字段匹配参数值可以是以下格式之一
<pattern>
- 匹配模式,其中*
代表任何子串。仅当模式不包含冒号时有效。如果给定的模式不包含任何星号,则可以优化为精确匹配。eq:<value>
- 完全匹配值like:<pattern>
- 基于模式匹配字符串,其中*
代表任何子串lt:<value>
- 匹配小于给定值的值gt:<value>
- 匹配大于给定值的值in:<list>
- 匹配逗号分隔列表中提到的任何值is:null
- 匹配null值not:
- 取消过滤,例如:not:is:null
或not:like:*foo*
搜索参数将根据匹配的字段自动解析为适当的格式(例如,如果存在一个字段 someNumericField
被标记为包含数字,搜索 someNumericField=eq:5
被解释为等于数字5,而不是字符串 "5")
集合-表格映射
在将数据库记录转换为REST形式时,所有主键值都合并为单个 id
,多个字段由破折号分隔。
在解析URL或JSON中给出的ID时,必须将其转换为组成部分字段。即使数据库记录中实际上只有一个ID字段,来自JSON或URL的ID数据也必须转换为正确的类型。
在加载和存储时,字段名可以在命名约定之间转换。Postgres中的表格和列的命名约定似乎是使用压缩在一起的小写字母。
在REST服务公开的视图中
- 集合名称由破折号分隔(例如
patient-stays
) - 字段名,在URL(修饰符和搜索参数)以及请求/响应JSON数据中,都是驼峰式(例如
patientAdmissionDate
)
本项目的目标之一是使覆盖这些约定变得简单,并允许针对不同事物的不同视图进行特殊处理。例如,一个类可以公开为 super-duper-car-washes
,但支持表实际上可以称为 x_okaycarwash
。
待办事项:添加使用此库的PHP示例。