REST/HATEOAS API的切入点?

Dan*_*bbs 8 rest entry-point hateoas http-options-method hal-json

我已经开始设计一个API,并决定让它符合REST/HATEOAS.API的切入点应该是什么?

这似乎是一个常见的,GET /但从我所读到的,它可能在逻辑上更有意义使用OPTIONS /,因为实际上没有/用于检索的资源.

我在这里给出了两个例子,使用JSON的HAL语法作为超媒体格式.

GET /

请求:

GET / HTTP/1.1
Host: example.com
Run Code Online (Sandbox Code Playgroud)

响应:

HTTP/1.1 200 OK
Date: …
Content-Type: application/json;charset=utf-8
Content-Length: 143

{
    "_links": {
        "self": {
            "href": "/"
        },
        "penguins": {
            "href": "/penguins"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

选项/

请求:

OPTIONS / HTTP/1.1
Host: example.com
Run Code Online (Sandbox Code Playgroud)

响应:

HTTP/1.1 200 OK
Date: …
Allow: OPTIONS
Content-Type: application/json;charset=utf-8
Content-Length: 143

{
    "_links": {
        "self": {
            "href": "/"
        },
        "penguins": {
            "href": "/penguins"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*n W 2

请求的响应OPTIONS仅描述您请求的资源的选项,即/GET /通常,让响应正文中每个链接的链接关系告诉您可以对链接的资源执行哪些操作会提供更多信息。

此外,响应OPTIONS是不可缓存的,这可能非常重要,特别是当涉及到链接菜单之类的静态内容时。