method/function 应该如何使用 REST 公开?
How should a method/function be exposed using REST?
在后端,我有一个方法(函数),它接受类型为 date
的可选输入,并找到当天所在的周和 return 该周的开始和结束日期。例如,如果输入是 2020/04/14,它将 return:
{
"start" : "2020/04/13",
"end": "2020/04/19"
}
我想将其公开为 REST 端点。我一直在想这两个方案:
1.
GET /week?date=2020/04/14
2.
POST /week?date=2020/04/14
但是,我想知道应该如何基于 REST 架构和通用约定来实现这样的端点?它在后端调用一个方法,但不使用资源。
一个POST请求通常用于更改服务器上的数据,实际上是创建一个新条目(例如插入一个新的数据库行或保存某个实体)。
GET 请求通常用于获取一些数据,例如从数据库中读取而不进行更改。
所以在这种情况下,应该使用GET。
POST 当你想在其中放置一个带有一些 'heavy' 负载的物体时使用。所以在这种情况下,我认为 GET 非常适合您的需求。
in this example we are not dealing with any resource
Resource
,在 REST 的上下文中,意味着特定的东西。以下是菲尔丁如何描述 resource:
The key abstraction of information in REST is a resource. Any information that can be named can be a resource: a document or image, a temporal service (e.g. "today's weather in Los Angeles"), a collection of other resources, a non-virtual object (e.g. a person), and so on. In other words, any concept that might be the target of an author's hypertext reference must fit within the definition of a resource.
所以从 REST 的框架来看,/week?date=2020/04/14
标识了一个资源,其表示描述了一个日历周。
由于本例中的 HTTP 请求具有有效的只读语义(又名 "safe" 语义)——我们不希望服务器以任何方式改变——自然适合此请求的是使用 GET
.
GET /week?date=2020/04/14
作为一般规则,任何只返回计算结果的东西都应该使用 GET,客户端提供的参数编码到资源的标识符中(就像我们在 Web 上使用 GET 表单所做的那样)。
例外情况是参数如此 large/numerous 以至于您的查询因 URI 长度的实际限制而瘫痪。在这些情况下,您可以使用 POST,牺牲轻松缓存来完成工作。
在后端,我有一个方法(函数),它接受类型为 date
的可选输入,并找到当天所在的周和 return 该周的开始和结束日期。例如,如果输入是 2020/04/14,它将 return:
{
"start" : "2020/04/13",
"end": "2020/04/19"
}
我想将其公开为 REST 端点。我一直在想这两个方案:
-
1.
GET /week?date=2020/04/14
-
2.
POST /week?date=2020/04/14
但是,我想知道应该如何基于 REST 架构和通用约定来实现这样的端点?它在后端调用一个方法,但不使用资源。
一个POST请求通常用于更改服务器上的数据,实际上是创建一个新条目(例如插入一个新的数据库行或保存某个实体)。
GET 请求通常用于获取一些数据,例如从数据库中读取而不进行更改。
所以在这种情况下,应该使用GET。
POST 当你想在其中放置一个带有一些 'heavy' 负载的物体时使用。所以在这种情况下,我认为 GET 非常适合您的需求。
in this example we are not dealing with any resource
Resource
,在 REST 的上下文中,意味着特定的东西。以下是菲尔丁如何描述 resource:
The key abstraction of information in REST is a resource. Any information that can be named can be a resource: a document or image, a temporal service (e.g. "today's weather in Los Angeles"), a collection of other resources, a non-virtual object (e.g. a person), and so on. In other words, any concept that might be the target of an author's hypertext reference must fit within the definition of a resource.
所以从 REST 的框架来看,/week?date=2020/04/14
标识了一个资源,其表示描述了一个日历周。
由于本例中的 HTTP 请求具有有效的只读语义(又名 "safe" 语义)——我们不希望服务器以任何方式改变——自然适合此请求的是使用 GET
.
GET /week?date=2020/04/14
作为一般规则,任何只返回计算结果的东西都应该使用 GET,客户端提供的参数编码到资源的标识符中(就像我们在 Web 上使用 GET 表单所做的那样)。
例外情况是参数如此 large/numerous 以至于您的查询因 URI 长度的实际限制而瘫痪。在这些情况下,您可以使用 POST,牺牲轻松缓存来完成工作。