HTTP协议的PUT和DELETE以及它们在PHP中的用法
作者:互联网
介绍
我读过以下内容:
Hypertext Transfer Protocol (HTTP) is the life of the web. It’s used every time you transfer a document, or make an AJAX request. But HTTP is surprisingly a relative unknown among some web developers.
The HTTP verbs comprise a major portion of our “uniform interface” constraint and provide us the action counterpart to the noun-based resource. The primary or most-commonly-used HTTP verbs (or methods, as they are properly called) are POST, GET, PUT, and DELETE.
咦?
好吧,我们突然忘记了事情.
他们说,PUT和DELETE.我只听说过POST和GET,从来没有在我看过的任何PHP代码中看到像$_PUT或$_DELETE这样的东西.
我的问题
这些方法(PUT)和(DELETE)是什么,如果可以在PHP中使用它们,我将如何解决这个问题.
注意:我知道这不是一个真正的问题但我总是抓住一个学习机会,如果我看到一个,并且非常想学习在PHP中使用这些方法,如果可能的话.
解决方法:
What are these methods (PUT) and (DELETE) for…
有很多词要用来解释这个问题,而且我还不够熟练,但是已经发布过,快速回顾一下HTTP specification所描述的内容.
该协议基本上说:
>当您需要访问资源并检索数据时使用GET,而您不必修改或更改此数据的状态.
>当您需要将一些数据发送到服务器时使用POST.防爆.从表单中将这些数据保存到某处.
>当您需要访问资源并从响应中仅检索Headers而不使用任何资源数据时,请使用HEAD.
>当您需要替换该系统上已存在的某些数据的状态时,请使用PUT.
>当您需要删除该系统上的资源(相对于您发送的URI)时,请使用DELETE.
>当您需要从资源获取通信选项时使用OPTIONS,以便检查该资源的允许方法.防爆.我们将它用于CORS请求和权限规则.
>您可以阅读该文档中剩余的两种方法,抱歉我从未使用过它.
基本上,协议是一组规则,您应该从应用程序中使用它来遵守它.
… and if it’s possible to
use them in PHP, how would I go about this.
从您的应用程序中,您应该检索与$_SERVER [‘REQUEST_METHOD’]一起使用的方法并因此做出反应.
一些处理不支持PUT或DELETE方法的浏览器的应用程序使用这个技巧,一个来自html的隐藏字段,其值为ex.:
<input name="_method" type="hidden" value="delete" />
因此,从应用程序中,您现在可以将其识别为DELETE请求.
按照PHP处理参数的简单描述:
当您(您的浏览器,您的客户端)向HTTP服务器请求资源时,您必须使用协议(HTTP)接受的方法之一.所以你需要通过:
>一种方法
>资源的Uri
>请求标题,如用户代理,主机,内容长度等
>(请求的可选主体)
所以请求应该如下所示:
GET /something/index.php?maybe=aparameter
现在,在您的应用程序中,PHP从此GET请求中获取参数并将它们插入到超全局(可访问的应用程序中)数组中.所以你可以访问返回’aparameter`的$_GET [‘maybe’].
在POST请求的情况下,您以类似的方式向HTTP服务器请求资源但具有重要区别.您在请求正文中提供数据:
POST /something/index.php
(body) maybe=aparameter
现在,在您的应用程序中,来自此POST请求的PHP获取参数并将它们插入到超全局(可访问的应用程序中)数组中.所以你可以访问返回’aparameter`的$_POST [‘maybe’].
请特别注意响应状态代码(例如,如果您收到了PUT请求并且您已经更新了该资源而没有错误,则应该返回204状态 – 无内容 – ).
标签:php,http,http-put,http-delete,http-options-method 来源: https://codeday.me/bug/20190925/1817300.html