RESTful命名:一个GET的POST调用?

时间:2014-10-13 12:45:07

标签: rest naming

在我们的API中,应该可以获取某些对象的所有元数据(可以超过1000个ID)。但端点应该如何?

可以使用以下正文制作POST api/objects/getmetadata吗?

体:

{
"Objects":[
{ 
"Id":23232,
"Id":3243,
"Id":3243,
...}
]}

1 个答案:

答案 0 :(得分:2)

如果您可以提供一些识别ID的参数,请使用GET这样的查询参数:

GET /customers?minId=1000&maxId=2000

or

GET /customers?minSalary=500

如果您只想对网址的一个网段进行分层过滤,也可以使用矩阵参数。

GET /api/objects;minId=1000/metadata

如果这是不可能的,并且您需要传递可能1000个ID的完整列表,POST绝对有效,但您应将其视为在服务器上创建新资源的请求:

POST /api/metadata-search

{ "objects" : ... }

服务器应该返回新创建的资源:

HTTP/1.1 201 Created
Location: /api/metadata-search/4711

这样,结果具有GET的优点,可以缓存,加入书签等。