我对RESTful PHP上的教程/示例感到困惑.他们中的大多数都使用框架(例如Slim)并最终成为API,这让我更加困惑.在完全理解如何创建简单的RESTful PHP之前,我想首先避免所有框架和API材料.
我明白那个,
REST, at it’s core, is really just about using the right HTTP verb for
the job. GET, POST, PUT, DELETE all have meanings, and if something is
described as being RESTful, all it really means is that the site/app
in question adheres to those meanings.
从php服务器端,我明白这是how我可以检测到REST请求类型,
$_SERVER['REQUEST_METHOD']
但我的主要问题是如何通过URL将这些REST类型(GET,POST,PUT,DELETE)发送到服务器?
当您希望创建或更新URL标识的资源时,将使用PUT请求.例如,
07002
然后,
DELETE应该与PUT相反;当您要删除请求的URL标识的资源时,应该使用它.
07003
http://restfulphp.com/clients/robin和http://restfulphp.com/clients/anne是相同的干净URL模式.我怎么知道前者是用于PUT而后者是用于DELETE?或者我应该在/ html格式中设置它以区分它们?
当curl进来时它会变得复杂 – 它与REST网站有什么关系?
从上面的教程,
Once you have cURL installed, type:
curl -v google.com
我应该在哪里打字?
curl如何帮助我删除或PUT? $_SERVER [‘REQUEST_METHOD’]如何从curl中检测REST类型?
curl -v -X DELETE /clients/anne
和
curl -v -X PUT -d "some text"
我问的问题可能听起来很愚蠢,但如果有人能帮助我理解这些问题会很棒.
编辑:
Argg PHP cURL – 另一件让我更加困惑的事情!如果我要通过XMLHttpRequest对象发送REST请求类型,为什么还需要它呢?它似乎是为了与其他API提供程序进行通信,我希望在此阶段避免使用它们.
如果我可以在我的本地网站中使用PHP cURL发送REST请求类型,那么我应该如何以及在何处放置这些来自Q&A的行,
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile);
curl_setopt($ch, CURLOPT_COOKIEFILE,$cookieFile);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 4);
如果我使用PHP cURL那么服务器端的$_SERVER [‘REQUEST_METHOD’]会发生什么?
解决方法:
http://restfulphp.com/clients/robin and http://restfulphp.com/clients/anne are the same clean URL pattern. How can I know that the former is meant for PUT and the latter is meant for DELETE?
你无法从URL中得知.客户端必须将URL与HTTP动词耦合. REST的一部分原因是您可能希望对同一资源执行不同的操作(如果您将来永远不想获取某些内容,则没有太多意义).
Or where should I set in the form/ html to differentiate them?
HTML表单只能触发POST和GET请求.如果要从网页使用不同的HTTP谓词,则需要使用JavaScript和XMLHttpRequest对象.
And it gets complicated when curl comes in – what is it to do with a REST website?
curl是一个库(以及使用该库的命令行客户端)用于发出HTTP请求.
在开发REST界面时,可以使用命令行客户端来测试服务器.您也可以将它用作实际的客户端,但是您可能最好不要编写专用工具,这样您就拥有了一个很好的命令行界面,而不是强制您在使用它时处理HTTP方面的界面.
作为库,您可以使用它为REST接口编写客户端.
Where should I type??
在终端仿真器(例如XTerm或Windows Power Shell)中的命令行shell(例如bash或Windows Power Shell)中.
How curl is going to help me to DELETE or to PUT?
它允许您指定发送的HTTP动词.您可以在问题后面的示例中看到.
How $_SERVER[‘REQUEST_METHOD’] is going to detect REST type from curl?
它告诉您使用哪个动词来发出请求.
Why do I need PHP cURL if I am going to send REST request types via XMLHttpRequest object?
你没有.如果要从服务器发出请求,可以使用PHP.如果要从浏览器发出请求,可以使用XMLHttpRequest.
It seems that it is meant for communicating with other API providers which I want to avoid at this stage.
您可以使用它在您控制的面向客户的Web服务器与后端系统之间进行通信,该后端系统具有您也控制的(非面向客户的)HTTP接口.
And if I can send REST request types with PHP cURL within my local website, how and where should I place these lines
在您希望向REST服务发出请求的服务器端代码(或您的其他PHP客户端)中.
If I use PHP cURL then what happens to $_SERVER[‘REQUEST_METHOD’] at the server side?
然后,假设您正在使用服务器端PHP(而不是,例如,命令行PHP):
>浏览器将向您的服务器发出请求
> $_SERVER [‘REQUEST_METHOD’]将是浏览器发出请求的方法
>在服务器上运行的PHP将向其他服务器(或可能是同一服务器的另一部分)发出请求
> $_SERVER [‘REQUEST_METHOD’]将是PHP发出请求的方法
>第二个请求的服务器将响应PHP客户端脚本
>第一个请求的服务器将响应浏览器
标签:php,rest,curl
来源: https://codeday.me/bug/20190722/1507668.html