RESTAPI命名约定?

RESTAPI命名约定?,rest,api,Rest,Api,我有一个简单的问题,我找不到答案 我的同事目前正在为一个应用程序制作RESTAPI,我们有一个调用,它只检查一些信息,并返回true或false。但是,我们不知道该调用什么类型的请求,因为它不检索任何资源或插入任何内容,它只是检查传递到查询中的一些信息。据我所知,GET必须检索一个资源,而这个调用没有这样做很难从您提供的问题的详细程度来判断。但是,如果需要检查资源是否存在,可以使用。它与相同,但不返回响应负载中的表示:它只返回状态代码和响应头 考虑以下请求: 它应该返回一个已存在的资源: HTT

我有一个简单的问题,我找不到答案


我的同事目前正在为一个应用程序制作RESTAPI,我们有一个调用,它只检查一些信息,并返回true或false。但是,我们不知道该调用什么类型的请求,因为它不检索任何资源或插入任何内容,它只是检查传递到查询中的一些信息。据我所知,GET必须检索一个资源,而这个调用没有这样做

很难从您提供的问题的详细程度来判断。但是,如果需要检查资源是否存在,可以使用。它与相同,但不返回响应负载中的表示:它只返回状态代码和响应头

考虑以下请求:

它应该返回一个已存在的资源:

HTTP/1.1 200 OK
Content-Type: application/json
对于不存在的资源:

HTTP/1.1 404 Not Found
Content-Type: application/json
根据您的需要,您可以使用,这可以看作是一个包罗万象的动词

例如,考虑以下请求和响应:

POST /postal-codes/validation HTTP/1.1
Host: example.org
Content-Type: application/json

{ "postal-code": "10001" }

很难从你提供的问题的详细程度来判断。但是,如果需要检查资源是否存在,可以使用。它与相同,但不返回响应负载中的表示:它只返回状态代码和响应头

考虑以下请求:

它应该返回一个已存在的资源:

HTTP/1.1 200 OK
Content-Type: application/json
对于不存在的资源:

HTTP/1.1 404 Not Found
Content-Type: application/json
根据您的需要,您可以使用,这可以看作是一个包罗万象的动词

例如,考虑以下请求和响应:

POST /postal-codes/validation HTTP/1.1
Host: example.org
Content-Type: application/json

{ "postal-code": "10001" }

我的理解是,在这种情况下,资源要么是真的,要么是假的。调用API时,根据API服务器处理的信息,您将期望响应为true或false,其状态将始终为200。因此,GET方法仍然适用于这种情况。
如果您对响应正文不感兴趣,并且需要响应代码和标题详细信息之类的数据,请使用HEAD。

据我所知,本例中的资源要么为真,要么为假。调用API时,根据API服务器处理的信息,您将期望响应为true或false,其状态将始终为200。因此,GET方法仍然适用于这种情况。
如果您对响应正文不感兴趣,并且需要响应代码和标题详细信息等数据,请使用HEAD。

可能有另一种表达“检查某些信息”的方式,对于这意味着什么,更具体一点很重要

让我们举一个任意的例子。您正在对博客文章进行建模,并想知道某些博客文章是否设置为“草稿”

“草稿”状态可以是它自己的资源,例如:

/posts/hello-world/is-draft
对is草稿资源执行GET请求可以产生:

{
   "is-draft": true
}

因此,要将任意事物建模为资源,考虑这一点的最佳方式是将操作的结果视为“表示”,将“您想知道的东西”视为URI。

可能有另一种表达“检查某些信息”的方式,对于这意味着什么,更具体一点很重要

让我们举一个任意的例子。您正在对博客文章进行建模,并想知道某些博客文章是否设置为“草稿”

“草稿”状态可以是它自己的资源,例如:

/posts/hello-world/is-draft
对is草稿资源执行GET请求可以产生:

{
   "is-draft": true
}
因此,要将任意事物建模为资源,考虑这一点的最佳方式是将操作的结果视为“表示”,将“您想知道的事物”视为URI

据我所知,GET必须检索资源,而这个调用没有这样做

从技术上讲,它是在检索资源;看

REST中信息的关键抽象是资源。任何可以命名的信息都可以是资源:文档或图像、临时服务(例如,洛杉矶的今天的天气)、其他资源的集合、非虚拟对象(例如,人)等等。换句话说,任何可能成为作者超文本引用目标的概念都必须符合资源的定义

在这种情况下,资源可能不会在数据模型中加载实体,但这没关系。并非所有资源都必须如此

从技术上讲,我认为你所拥有的是一种功能;计算结果所需的所有信息都存在于URI本身中?这意味着,如果客户机知道如何进行计算,并且拥有可用的计算资源,那么客户机将能够自己完成这项工作

但是拥有一个由函数产生的资源并没有什么错

在某些API中,您将看到返回true/false的谓词函数被实现为资源,这些资源仅更精确地存在,只有在计算为true时才具有表示形式

GET /predicate?true

204 No Content

GET /predicate?false

404 Not Found
事实上你不需要 d考虑资源状态来计算对查询的正确响应是隐藏在统一接口后面的实现细节。 据我所知,GET必须检索资源,而这个调用没有这样做

从技术上讲,它是在检索资源;看

REST中信息的关键抽象是资源。任何可以命名的信息都可以是资源:文档或图像、临时服务(例如,洛杉矶的今天的天气)、其他资源的集合、非虚拟对象(例如,人)等等。换句话说,任何可能成为作者超文本引用目标的概念都必须符合资源的定义

在这种情况下,资源可能不会在数据模型中加载实体,但这没关系。并非所有资源都必须如此

从技术上讲,我认为你所拥有的是一种功能;计算结果所需的所有信息都存在于URI本身中?这意味着,如果客户机知道如何进行计算,并且拥有可用的计算资源,那么客户机将能够自己完成这项工作

但是拥有一个由函数产生的资源并没有什么错

在某些API中,您将看到返回true/false的谓词函数被实现为资源,这些资源仅更精确地存在,只有在计算为true时才具有表示形式

GET /predicate?true

204 No Content

GET /predicate?false

404 Not Found

您不需要考虑资源状态来计算对查询的正确响应,这是一个隐藏在统一接口后面的实现细节。