Php RESTful API帮助,与HTTP和XML响应混淆

Php RESTful API帮助,与HTTP和XML响应混淆,php,xml,api,http,rest,Php,Xml,Api,Http,Rest,我正在编写一个API,并一直在阅读各种来源的教程等。我对回答有点困惑。我已经编写了一个类,它将发送回HTTP头响应和XML响应。这是正确的还是我应该使用其中一个而不是两个?另外,如何检查我发送的HTTP头响应是否正确?我正在使用PHP 我已使用以下工具检查HTTP响应: 这表示响应是HTTP/1.1200 OK。但是,在我的脚本中,我将其设置为: 标题(HTTP/1.1); 因此,哪一个是正确的?我怎样才能正确地检查?你知道怎么回事吗 非常感谢您的帮助。您是从头开始写这篇文章的吗?如果需要,则使

我正在编写一个API,并一直在阅读各种来源的教程等。我对回答有点困惑。我已经编写了一个类,它将发送回HTTP头响应和XML响应。这是正确的还是我应该使用其中一个而不是两个?另外,如何检查我发送的HTTP头响应是否正确?我正在使用PHP

我已使用以下工具检查HTTP响应: 这表示响应是HTTP/1.1200 OK。但是,在我的脚本中,我将其设置为: 标题(HTTP/1.1); 因此,哪一个是正确的?我怎样才能正确地检查?你知道怎么回事吗


非常感谢您的帮助。

您是从头开始写这篇文章的吗?如果需要,则使用通用或流行的框架作为基础,集中精力构建API方法,并让框架处理交付机制


你可以在谷歌上搜索更多的示例

HTTP头可以是任何你喜欢的-让客户端来处理它们。客户端可以使用它们来确定操作(请求)是否成功完成,服务是否可用以及其他常见的有用信息。如果标头由协议预定义并包含有效数据,或者由您定义(无需验证),则标头是正确的


XML、JSON或任何其他响应都是您想要告诉客户机的数据。它可能包含有关错误、执行操作的结果等的详细信息。

在restful服务中,您使用http方法get、put、post和delete,因此http头“包含”在其中。这种方法调用的有效负载可以按照您喜欢的方式格式化(它必须是现有的mimetype!),因此xml也是可能的!您必须在响应“元数据”和响应负载之间进行划分:“元数据”是一个http头,负载是您的xml字符串,因此您必须同时发送这两个数据!否则,您将发送一个空响应:-)

在您的请求中,您必须定义响应应该使用哪种数据表示(在您的示例中是xml)。看一看这个(左边的是restful)


不过,像其他答案所说的那样,使用一个框架是一个好主意。

我不建议您弄乱HTTP头响应。始终将其设置为200 OK,并在XML响应中发回所需的信息

这样,客户机只需担心XML响应。如果出现HTTP错误,例如403禁止,这意味着这是在系统级别(服务器配置)上,而不是在应用层本身上。Redbot将对HTTP响应进行非常彻底的分析,以确保您符合HTTP规范


建议您阅读一些关于HTTP协议的介绍性材料。这将使您的生活更加轻松。

是的,我从零开始就快完成了,因此不想切换到框架。是的,但我需要确保我发送的内容是正确的。我该怎么做?这是我的问题。我不知道如何检查。那么你是说发送HTTP和XML都可以吗?thanks@LeeTee如果您要发送
某物:诸如此类诸如此类的
标题,您可以确保它是正确的。如果你要发送
东西:
:诸如此类的标题,那将是一个错误。因此,您可以使用regexp检查它:
$correct=preg_match('/^\w+:.+$/',$header)
$correct
变量sill确定标头格式是否正确。right-OK,因此我发送HTTP和XML响应都是正确的。如何在使用上述工具时测试HTTP响应,因为我得到了错误的结果。静态函数errorResponse($status=400,$body=''){$status_message=APIResponse::getStatusCodeMessage($status);$status_header='HTTP/1.1'.$status.'.$status;header($HTTP/1.1'.$status.'.$status.'.'.$status.'.$status.'.);..…该方法在HTTP响应之后继续设置XML响应。基本上,这段代码是设置:header(HTTP/1.1);我认为最好的办法是用你的代码更新你的答案。有点奇怪,你设置了401,并将200发送给消费者……除此之外,你还使用了APIResponse->Framework,PHP native,…?通过更新你的答案,你可以使用语法高亮显示。我想我已经发现了问题,但不确定如何解决。因为我正在使用cURL to ac访问该文件时,它不允许我设置标题。当我通过浏览器直接访问同一个文件时,它会工作。因此,有人知道我是如何解决这个问题的吗?因此,使用PHP header()函数设置HTTP标题是不正确的?这不是“不正确的”。这是一个偏好问题。但基本上,我使用的所有API在发生错误时通常都会通过XML返回错误消息,HTTP状态保持为200 OK。因此,基本上,200 OK可以表示应用程序已成功访问并执行,而不管返回的XML响应如何。HTTP标头响应表示传输消息,不是应用程序消息。@你所建议的是一个非常糟糕的主意。这些响应代码存在是有原因的,应该使用和遵守。HTTP是一种应用程序协议,因此最好使用。@Darrel如果你得到403,你怎么知道这是到达API的安全问题,还是API实际执行并返回了a用户身份验证失败(例如,在检查数据库后)@sin来自RFC 2616摘要“超文本传输协议(HTTP)是分布式、协作、超媒体信息系统的应用级协议。”你的误解很常见,但它确实阻止了人们按预期的方式使用HTTP。你没有接受任何答案…他们中有人回答了你的问题吗?!