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用于POSTPUT请求来创建新资源

  • 204 No Content用于PUT``PATCHDELETE请求,如果组态对于资源更新没有设置返回体,如果组态值设置包括相应PUT```200OK,将会返回更新, 201 Created 将会返回给资源通过PUT创建

如果配置值(RepositoryRestConfiguration.returnBodyOnUpdateRepositoryRestConfiguration.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方法

集合资源支持GETPOST。所有其他的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

返回集合资源是否可用。

POST

创建从给定的请求主体的新实体。

自定义状态码
  • 405 Method Not Allowed -save(…)方法没有导出(通过@RestResource(出口= FALSE))或不存在存储库中的。
支持的媒体类型
  • application/hal+json

  • application/json

5.3. 项目资源

项目资源一般支持 GET,PUT,PATCHDELETE除非明确的配置阻止了(详见下文)。

5.3.1. 支持的HTTP方法

项目资源通常支持 GET,PUT,PATCHDELETE除非显式配置防止(见下文详细信息)。

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))或不存在存储库中的。
支持的媒体类型
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

返回查询方法资源是否可用。

results matching ""

    No results matching ""