gpt4 book ai didi

php - PHP RESTful 应用程序的正确 header ?

转载 作者:可可西里 更新时间:2023-11-01 13:56:14 25 4
gpt4 key购买 nike

目标: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/123GET:返回文章
  • server.com/articles/123PUT:将文章替换为请求正文中的文章
  • server.com/articles/123DELETE:删除文章
  • 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com