REST解决方案,不严格指代实际资源

时间:2015-04-23 22:59:18

标签: api rest

选择一个简单的表格person

CREATE TABLE person
(
  id bigint,
  name nvarchar(128),
  age int
)

您可以在REST界面中表示:

GET /person
GET /person/5
PUT /person
POST /person/5
PATCH /person/5
DELETE /person/5

此接口需要2个参数:

{ 
  name: 'Joe',
  age: 16,
}

然后,您可以定义一个期望这两个参数的API,甚至可以选择age

但是,假设您想在客户端定义一个模型,希望用这个person表做一些奇特的事情,例如拉动所有青少年,你最好如何代表这个?

我想我可以做一些事情,只支持GET,然后随意地要求符合查询需求的不同参数:

GET /person/teenager

但是,我不知道这会适当地满足所有用例。例如,我相信REST网址应该只有名词,我不知道如何将这样的东西放到名词形式中:

GET /person/by-age

任何想法/参考/建议?

1 个答案:

答案 0 :(得分:2)

限制人员列出结果的最常用方法是使用查询参数。您可以以对API有用的任何方式定义查询参数。一个例子可能只是GET /person?age=13..20才能获得青少年。另一个例子可能是GET /person/?filter=age>=13,age<20