API的REST方法和细节

  • 本文关键字:细节 方法 REST API rest
  • 更新时间 :
  • 英文 :


我正在设计一个API,例如,让我们考虑以下场景:

在我的业务领域中总共有三个实体A, B和c。

A到B是一对多关系。B和c是一对多关系

应用中有多条A记录

所以如果我设计REST API,那么它将看起来像这样。

GET /api/A  ( return list of A)
GET /api/A/{id} ( return specific record of A)
POST /api/A  ( new record)
PUT  /api/A/{id} ( update)
Get /api/A/{id}/B ( List of B record with A with specific Id as parent)

与其他端点相同,B到C遵循相同的结构。

现在几个问题。

  1. 当我得到A的列表时,我想应用复杂的过滤条件,有些情况下,查询或get操作是不好的

    • 是否可以使用POST方法?这是否违反了REST规则?
  2. 当UI显示A的记录列表时,同时显示B的计数数和C的计数数。

    • 如何公开这些数据?

我们可以使用/api/A/search(用于复杂搜索)暴露POST吗?

还有如何包括其他子属性,仍然遵循REST ?

当我得到A的列表时,我想应用复杂的过滤条件,有些情况下,查询或get操作是不好的

是否可以使用POST方法?这是否违反REST规则?

POST将工作?是的。

这是不是违反了规则?是的。

当信息对应于潜在资源时,使用POST进行信息检索并不是RESTful,因为这种用法会妨碍安全的可重用性和拥有URI的网络效应。——菲尔丁,2009

我们可以使用/api/A/search(用于复杂搜索)暴露POST吗?

POST有和以前一样的问题

但是/api/A/search很好——有许多不同的资源(文档)包括来自相同域实体的信息副本,或者来自多个域实体的信息组合,这是正常的。想想"网页";我们总是把来自不同实体的信息组合到一个网页上。

还有如何包括其他子属性,仍然遵循REST ?

通过理解资源/文档模型与域/实体模型是不同的。

最新更新