- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
目标:RESTful API
问题:我所拥有的方法是否在真正的 RESTful API 之下,或者它是否像我被告知的那样缺少某些东西?
这是一个由 3 部分组成的问题..
假设我有一个 PHP 项目,它有一个以 XML 或 JSON 格式返回数据的 API,您将像下面这样访问 API...
server.com/article/123 | Returns ID 123 using GET
server.com/article/new | Creates a new article using POST
server.com/article/123/edit | Edits an article with the ID 123 using POST
server.com/article/123/delete | Deletes article with ID 123 using POST
1)
我也总是读到 PUT
应该用于编辑对象,下面我把单词 POST
作为用户将发送 POST
到 tht URI对于删除操作,我应该通过使用类似这样的东西在 php 中使用 PUT
吗?
$_PUT = array();
if($_SERVER['REQUEST_METHOD'] == 'PUT') {
parse_str(file_get_contents('php://input'), $_PUT);
}
2)
我在前一段时间写在 SO 上的一个问题中被告知这类似于 RESTful API 但事实并非如此,我得到的答案是这样......
简而言之,您的服务不是 RESTful,但很接近。与其在 URL 段中指定操作(编辑、删除等),不如使用 HTTP 动词(GET、PUT、POST、DELETE)。
要么那个人不知道他在说什么,要么我就是不明白,在阅读了无数关于该主题的文章并与我能找到的每个 API 进行比较后,我上面的示例如何不是 RESTful?
我想制作一个 RESTful API,如果需要请帮我更正上面的示例?
3)
还假设我计划用这样的东西向用户返回一个 JSON 响应......
<?php
header('HTTP/1.1 200 OK');
header('Content-type: application/json');
$data = // my code that returns the appropriate data;
echo json_encode($data);
?>
这是将结果返回给用户的正确方法还是我遗漏了什么? 许多文章和问题都讨论了这个概念,但没有像我的示例那样深入到实际代码中。
最佳答案
要解决您问题的第 2 部分,更 RESTful 的 URL 和方法结构如下:
server.com/articles/123
– GET
:返回文章server.com/articles/123
– PUT
:将文章替换为请求正文中的文章server.com/articles/123
– DELETE
:删除文章server.com/articles/
– POST
:创建新文章这里的想法是,URL 代表资源本身(在本例中为文章),动词(在实际情况下)表示您要对其执行的操作。我能想到的关于 true RESTful API 的最佳示例是 GitHub API 的最新版本: 据我所知,他们适本地使用了 HTTP 方法、响应代码和自定义 MIME 类型。
在回答问题的第 3 部分时,这当然是一种有效的方法,但是如果您要使用自定义 MIME 类型,例如 application/vnd.myawesomesite.article+json
,这将使在客户端更容易解释,因为客户端可以使用 MIME 类型来确定如何解析结果:例如,客户端可以根据提供的 MIME 类型分派(dispatch)到不同的反序列化器和类。同样,GitHub 的人们在 their API docs 中给出了一些例子。 .
关于php - PHP RESTful 应用程序的正确 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8597017/
我在让“@header”或任何其他@规则在ANTLR中工作时遇到麻烦。具有非常基本的语法,如下所示: grammar test; options { language = CSharp2;
我对来源和寄宿有疑问 我有一个ajax页面“Page A”,它将称为ajax提要“Page B” 我看到来自ajax调用的“页面B”的请求 header 具有源“http://mydomain.com
我在 pandas 中使用了数据透视表并获得了所需的数据框格式,但现在我有两行标题。数据透视表后的结果数据框如下: scenario Actual Plan
我在 pandas 中使用了数据透视表并获得了所需的数据框格式,但现在我有两行标题。数据透视表后的结果数据框如下: scenario Actual Plan
我想在主机将它们发送到网络之前修改数据包头(IP 头、TCP 头)。 例如,如果我使用 firefox 进行浏览,那么我想拦截所有来自 firefox 的数据包并修改 IP/TCP header ,然
我的 header 内容被包装到#header 中,但是当我设置边框显示结构时,它显示我的#header 的内容出现在#header 本身之后。可能是什么问题?这是我的代码: #header { bo
我是一名 Web 开发人员,使用过 PHP 和 .NET。有一年多的 Web 工作经验,我一直无法彻底了解浏览器缓存功能,希望这里的 Web Gurus 可以帮助我。我心中的问题是: 浏览器实际上是如
伙计们,我有一个问题,我不知道如何在一个 header 中连接多个 header ,我们称它为“主 header ”并使用该 header 中的函数,例如 // A.h #include class
我有一个包含 SOAP 消息的 XMLHTTPRequest。 我想添加用于标识消息并将由 C# Web 服务使用的 guid。 GUID 的目标是识别特定用户,并应护送所有用户请求以在服务器上进行身
我一直在阅读粘性标题,这是我目前所发现的。第一个粘性 header 效果很好,但是当它遇到第一个 header 时,我如何向上滚动第一个 header 并使第二个 header 卡住? http://
我想将当前基于 TableView 的数据网格转换为新的 UICollectionView 类。 这就是我当前的网格的样子: 我的网格有两个标题: 年份(2006a、2007a 等)和 类型(“收入”
我目前正在使用 Apollo 服务器。我正在尝试在响应 header 中设置一个属性。并且此属性是从客户端 graphQL 请求 header 中检索的。 我在网上查了一下。并看到了诸如使用插件或扩展
我的 Controller 的方法需要设置一个标题,例如X-Authorization .创建新对象( store Action )后,我执行转发以显示新创建的对象( show Action ): $
我正在研究一些关于 VLAN 的事情,发现了 VLAN 标签 和 header 。 如果我们有标准 802.3 以太网帧 的 MTU(1518 字节), header 802.3 中包含什么? 另外,
我是放心和 Java 的新手,我正在尝试做一个非常基本的测试来检查 API 的响应是否为 200 ok。 谁能告诉我我需要在下面的脚本中更改什么才能传递多个 header Id、Key 和 ConId
在我的项目中,我需要知道 zlib header 是什么样的。我听说它相当简单,但我找不到 zlib header 的任何描述。 例如,它是否包含魔数(Magic Number)? 最佳答案 zlib
我正在使用 JMeter 测试 HTTP 服务器,该服务器接受并验证 APIKey 并在成功时返回一个有时限的 token 。如果我有 token ,我想发送一个 token ;如果没有,我想发送一个
以太网 header 是什么样的? 是吗: 1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|
我们的应用程序支持 CORS 配置 header 。我在两个不同的主机上分别配置了 testApp。两种设置都相互独立工作。host1 上的应用程序配置有 CORS header Access-Con
tlhelp32.h 不包含 windows.h 本身是有原因的吗?我一直在与大量的编译器错误作斗争,因为我在包含 tlhelp32.h 之后包含了 windows.h。这是设计决定还是出于什么原因?
我是一名优秀的程序员,十分优秀!