Ano*_*ous 14 api rest ember-data
我正在使用ember-data构建一个EmberJS应用程序.
我的应用程序中的某些功能需要非常复杂的查询.
举个例子,假设我有三个实体 - 学生,老师和班级.如果我想得到1993年之前出生的所有在X老师上课的学生的名单,我怎么能用RESTful api做到这一点?在简单的SQL中,它很容易,但我不确定在我的API中实现它的最佳实践.
我是否需要与基本的REST API一起构建自定义端点?
所以我仍然有:
GET /students (which returns all the students)
GET /students/{id} (which returns a specific student)
etc
Run Code Online (Sandbox Code Playgroud)
但是为我的"自定义"查询实现以下内容:
GET /students/custom/born_before/{date}/taught_by/{teacher_id}
Run Code Online (Sandbox Code Playgroud)
或者有更标准化的方法吗?
Pab*_*ano 31
你可以改变你的
GET /students/custom/born_before/{date}/taught_by/{teacher_id}
Run Code Online (Sandbox Code Playgroud)
成
GET /students/?born_before={date}&taught_by={teacher_id}
Run Code Online (Sandbox Code Playgroud)
这只是一个"按示例查询"选项:您可以使用提供的字段填充模型实例并使用它们进行查询.字段越少,搜索范围越广,显示的结果越多.
例如,这就是JIRA API的工作方式.
一种选择是在学生上设置一个可以发布的搜索终结点.
所以你可能有:
POST /students/filter
Run Code Online (Sandbox Code Playgroud)
您发布POST的过滤器对象如下所示:
{ BornBefore:1993, TaughtBy:123 }
Run Code Online (Sandbox Code Playgroud)
我还看到了一个选项,而不是发布,API有一个过滤器,然后使用查询字符串.
我自己更喜欢第一个.特别是如果它可以是一个长时间运行的过程,因为您的POST可以返回ID和/或relAPI调用的链接,客户端应该使用它来获取状态更新并获得结果.
那么你就会用POST /Students/filter它来回复/Students/Filter/123,你的客户会定期GET开始/Students/Filter/123直到得到结果对象.当然,对于简单的简短查询,您可以立即返回结果.但是,如果它需要一两秒钟,你可以走这条路.
O'Reilly的这本书提供了有关构建ReSTful API的一些很好的信息.
| 归档时间: |
|
| 查看次数: |
9756 次 |
| 最近记录: |