5. 知识库资源
5.1. 基本面
Spring Data REST的基本功能就是给Spring Data资料库提供参考,所以,存在潜在调整的定制参考知识库的方式是库接口,假设有如下的库接口:
publicinterfaceOrderRepositoryextendsCrudRepository<Order,Long>{}
对于这个库,Spring Data REST在/orders
给出了一个集合,路径是从小写形式,复数,简单的类域类的名称派生被管理路径,这也暴露了一个项目的资源为每个URI模板下/orders/{id}
的信息库管理的项目
默认情况下,HTTP方法与这些资源图接触的的方法都是来自CrudRepository
的方法。 了解更多关于在collection resources and item resources.
5.1.1.默认状态码
在这个资源中,我们用一组默认的状态码:
200 OK
用于普通的get
请求201 Created
用于POST
和PUT
请求来创建新资源204 No Content
用于PUT``PATCH
和DELETE
请求,如果组态对于资源更新没有设置返回体,如果组态值设置包括相应PUT```200OK
,将会返回更新,201 Created
将会返回给资源通过PUT
创建
如果配置值(RepositoryRestConfiguration.returnBodyOnUpdate
和 RepositoryRestConfiguration.returnBodyCreate)
显示设置为null,HTTP Accept标头的存在将被用来确定响应代码
5.1.2. 资源的可发现性
一个核心原则 HATEOAS 资源应该发现通过出版物的链接,指向可用资源。有几个相互竞争的实际标准如何表示链接的JSON。默认情况下,Spring Data REST HAL 呈现相应。HAL定义链接中包含属性返回的列表。
资源发现开始于应用程序的顶层。通过发出到在其下Spring Data REST应用部署在根URL的请求时,客户端可以提取一组从JSON返回的对象,它表示提供给客户端的资源的下一级的链接。
例如,要发现哪些资源可在应用程序的根目录下,发出HTTPGET
到根网址:
curl -v http://localhost:8080/< HTTP/1.1200 OK
<Content-Type: application/hal+json
{"_links":{"orders":{"href":"http://localhost:8080/orders"},"profile":{"href":"http://localhost:8080/api/alps"}}}
结果文档的属性本身就是一个对象包括代表在HAL指定嵌套链接对象的关系型按键。
有关profile配置文件链接的详细信息,请参阅Application-Level Profile Semantics (ALPS). | |
---|---|
5.2. 收集资源
Spring Data REST公开领域类导出存储库处理的小写形式,复数版本命名的集资源。两个资源和路径的名称可以用@ RepositoryRestResource
储存库接口上进行定制。
5.2.1. 支持的HTTP方法
集合资源支持GET
和POST
。所有其他的HTTP方法会导致405方法不Allowed
。
GET
返回所有通过它的实体findAll(…)
方法实体库服务器。如果仓库是寻呼信息库,我们包括在必要的和额外的页面的元数据分页链接。
参数
如果存储库具有分页功能的资源采用下列参数:
page
- 页码访问(索引为0,默认为0)。size
- 请求的页面大小(默认为20)。sort
- 在格式短指令的集合($propertyname,)+[asc|desc]
?.
自定义状态码
405 Method Not Allowed
- 如果没有出口的findAll(…)
方法 (通过@RestResource(exported = false)
) 或不存在存储库中.
支持的媒体类型
application/hal+json
application/json
相关资源
search
- a search resource 如果后备资源库公开查询方法.
HEAD
返回集合资源是否可用。
POST
创建从给定的请求主体的新实体。
自定义状态码
405 Method Not Allowed
-save(…)
方法没有导出(通过@RestResource(出口= FALSE)
)或不存在存储库中的。
支持的媒体类型
application/hal+json
application/json
5.3. 项目资源
项目资源一般支持 GET
,PUT
,PATCH
和 DELETE
除非明确的配置阻止了(详见下文)。
5.3.1. 支持的HTTP方法
项目资源通常支持 GET
,PUT
,PATCH
和DELETE
除非显式配置防止(见下文详细信息)。
GET
返回单个实体。
自定义状态码
405 Method Not Allowed
-findOne(…)
方法没有导出(通过@RestResource(出口= FALSE)
)或不存在存储库中的。
支持的媒体类型
application/hal+json
application/json
相关资源
对于域类型的每个协会,我们揭露关联属性命名的连接。这可以通过使用上属性@ RestResource
定制。相关的资源型[association resource]
(http://docs.spring.io/spring-data/rest/docs/2.5.2.RELEASE/reference/html/#repository-resources.association-resource).
HEAD
替换用附带的请求主体目标资源的状态。
PUT
用所提供的请求体替换目标资源的状态。
自定义状态码
405 Method Not Allowed
-save(…)
方法没有导出(通过@RestResource(出口= FALSE)
)或不存在存储库中的。
支持的媒体类型
application/hal+json
application/json
PATCH
类似PUT
但部分更新资源的状态。
自定义状态码
405 Method Not Allowed
-save(…)
方法没有导出(通过@RestResource(出口= FALSE)
)或不存在存储库中的。
支持的媒体类型
application/hal+json
application/json
DELETE
删除露出的资源
自定义状态码
405 Method Not Allowed
-delete(…)
方法没有导出(通过@RestResource(出口= FALSE)
)或不存在存储库中的。
5.4. 协会的资源
Spring Data REST公开每个有关联的项目的每一项资源的子资源。这个名字和关联属性的名称的资源的默认路径,可以使用@ RestResource
的关联属性进行定制。
5.4.1. 支持的HTTP方法
GET
返回关联资源的状态
支持的媒体类型
application/hal+json
application/json
PUT
结合所述资源所指向给定的URI(多个)到资源。
自定义状态码
400 Bad Request
- 给予一个一对一关联多个URI。
支持的媒体类型
- text/uri-list - 指向资源的URI绑定到的关联。
POST
仅支持收藏协会。添加到集合中的新元素。
支持的媒体类型
- text/uri-list - 指向资源的URI绑定到的关联。
DELETE
解除绑定的关联。
自定义状态码
405 Method Not Allowed
- 该协会非可选
5.5. 搜索资源
搜索资源返回由存储库公开的所有查询方法链接。查询方法资源的路径和名称可以使用在方法声明@ RestResource
进行修改。
5.5.1. 支持的HTTP方法
作为检索的搜索资源是一个只读资源仅支持GET
GET
返回指向单个查询方法资源的链接列表
支持的媒体类型
application/hal+json
application/json
相关资源
对于存储库中我们揭露的每一个申报查询方法query method resource. 如果资源支持分页,指向的URL将包含分页参数的URI模板。
HEAD
返回搜索资源是否可用。404返回码表示根本没有查询方法可用资源。
5.6. 查询方法资源
查询资源方法执行查询是通过资源库接口上的单个查询方法。
5.6.1. 支持的HTTP方法
作为检索的资源是一个只读资源支持仅GET
。
GET
返回查询执行的结果。
参数
如果查询方法具有分页功能(表明指向URI模板只想资源)则资源将采用下列参数:
page
- 页码访问(索引为0,默认为0)。size
- 请求的页面大小(默认为20)。sort
- 在这个版本中分类指令的集合($propertyname,)+[asc|desc]
?.
支持的媒体类型
application/hal+json
application/json
HEAD
返回查询方法资源是否可用。