首页 > 解决方案 > 根据 REST API 规范,以下哪些是有效的 URI(统一资源标识符)?

问题描述

如何根据 REST API 规范识别以下哪个统一资源标识符 (URI) 是有效的。

选择一个或多个选项

1. POST https://api.example.com/whales/create/9xf3df

2. PUT https://api.example.com/whales/9xf3df

3. GET https://api.example.com/whales/9xf3df?sort=name&valid=true

4. DELETE https://api.example.com/whales 

标签: apiresturi

解决方案


REST 不关心您为资源标识符使用的拼写约定;任何符合RFC 3986定义的生产规则的东西都可以。

/whales/create/9xf3df
/whales/9xf3df
/whales/9xf3df?sort=name&valid=true
/whales 

/0cc846bb-678d-45d8-9c06-d9cf94cee0a5
/9xf3df/whales

这些都是很好的标识符。

“REST API”的标识符与网页的标识符完全一样——你可以使用任何你想要的拼写,浏览器、缓存、网络爬虫等都可以很好地使用它们;这些通用组件将标识符视为标识符——它们不会尝试从中提取任何含义。

通过演示,请注意以下所有操作都完全按照您的预期方式工作:

REST 是否关心上述选项的 POST、PUT、GET 和 DELETE?

很难确定你在这里问的是哪个问题。

PUT /dictionary/delete HTTP/1.1

这是一个完全令人满意的请求行,它的含义没有歧义。在此示例中, PUT 是方法令牌;这告诉服务器我们正在请求将目标资源的表示(由 标识/dictionary/delete)替换为请求的消息正文中包含的表示

对于这个特定的资源,这可能意味着消息体是一个 HTML 文档(我们会Content-Type: text/html在标题中看到,以确保服务器知道如何正确解释提供的字节)。

PATCH /dictionary/delete HTTP/1.1

这也是一个令人满意的请求行;我们再次请求对/dictionary/delete资源的表示进行更改,但我们将以稍微不同的方式进行处理 - 我们不是在消息正文中包含替换表示,而是提供要进行的更改列表的表示(又名“补丁文件”)。

统一的界面意味着我们应该期望人们www.merriam-webster.com能够完全按照我们在此处描述的那样理解这些消息。

现在,对于这些特定资源,他们可能不希望随机堆栈溢出成员对其网站进行更改,因此他们可能会响应403 Forbidden405 Method Not Allowed

所有通用组件都将理解这意味着什么,因为标准化的响应元数据对所有资源都是通用的。


推荐阅读