HTTP协议的PUT和DELETE及其在PHP中的使用

2023-12-21

介绍

我已阅读以下内容:

超文本传输​​协议 (HTTP) 是网络的生命。每次传输文档或发出 AJAX 请求时都会用到它。但令人惊讶的是,HTTP 在一些 Web 开发人员中相对陌生。

HTTP 动词构成了“统一接口”约束的主要部分,并为我们提供了与基于名词的资源相对应的操作。主要或最常用的 HTTP 动词(或方法,因为它们被正确地称为)是 POST、GET、PUT, and DELETE.

Huh?

好吧,我们已经到了我失去踪迹的地步。

PUT and DELETE, 他们说。我只听说过POST and GET从来没有见过类似的东西$_PUT or $_DELETE在我看过的任何 PHP 代码中都经过。

我的问题

这些方法 (PUT) 和 (DELETE) 的用途是什么?如果可以在 PHP 中使用它们,我将如何处理这个问题。

Note:我知道这并不是一个真正的问题,但如果我看到一个学习机会,我总是会抓住一个学习机会,并且非常想学习在 PHP 中使用这些方法(如果可能的话)。


这些方法(PUT)和(DELETE)是什么......

有很多话要花很多钱来解释这一点,而且我还不够熟练,但正如已经发布的那样,快速回顾一下HTTP规范 https://www.rfc-editor.org/rfc/rfc7231#section-4描述。

该协议基本上是这样说的:

  • use GET当你需要的时候访问资源并检索数据,并且您不必修改或更改此数据的状态。

  • use POST当你需要的时候发送一些数据到服务器。前任。从表单中将这些数据保存在某处。

  • use HEAD当你需要的时候访问资源并仅从响应中检索标头,没有任何资源数据。

  • use PUT当你需要的时候替换一些已经存在的数据的状态在那个系统上。

  • use DELETE当你需要的时候删除资源(相对于您发送的 URI)在该系统上。

  • use OPTIONS当您需要从资源获取通信选项时,因此对于检查该资源允许的方法。前任。我们将其用于 CORS 请求和权限规则。

  • 您可以阅读该文档中的其余两种方法,抱歉我从未使用过它。

基本上,协议是一组您应该在应用程序中使用的规则来遵守它。


...如果可以的话 在 PHP 中使用它们,我将如何解决这个问题。

从您的 php 应用程序中,您可以通过查看超级全局数组来检索使用了哪种方法$_SERVER并检查该字段的值REQUEST_METHOD.

因此,从您的 php 应用程序中,您现在可以识别这是 DELETE 还是 PUT 请求,例如。$_SERVER['REQUEST_METHOD'] === 'DELETE' or $_SERVER['REQUEST_METHOD'] === 'PUT'.

* 另请注意,某些处理不支持 PUT 或 DELETE 方法的浏览器的应用程序使用以下技巧,即 html 表单中的隐藏字段,并在其 value 属性中指定动词,例如:

<input name="_method" type="hidden" value="delete" />

遵循一个带有简短描述的示例,了解处理这 2 个 http 请求的可能方法

当您(您的浏览器、您的客户端)向 HTTP 服务器请求资源时,您必须使用协议 (HTTP) 接受的方法之一。所以你的请求需要通过:

  • A METHOD
  • 资源的 Uri
  • 请求标头,如 User-Agent、Host、Content-Length 等
  • (请求正文可选)

现在,虽然您可以使用各自的全局变量从 POST 和 GET 请求获取数据($_GET, $_POST),在 PUT 和 DELETE 请求的情况下,PHP 不提供这些快速访问全局变量;但你可以使用的值$_SERVER['REQUEST_METHOD']检查请求中的方法并相应地处理您的逻辑。

SoPUT 请求如下所示:

PUT /something/index.php

(body) maybe=aparameter

您可以通过阅读 PHP 中的php://input溪流,例如类似的东西:

if ($_SERVER['REQUEST_METHOD'] === 'PUT') { 
    $myEntireBody = file_get_contents('php://input'); //Be aware that the stream can only be read once
}

andDELETE 请求如下所示:

DELETE /something/index.php?maybe=aparameter

检查方法后,您可以再次构建逻辑:

if ($_SERVER['REQUEST_METHOD'] === 'DELETE') { 
    // do something
}

请注意 DELETE 请求没有正文,并且还要非常注意响应状态代码(例如,如果您收到 PUT 请求并且您已更新该资源且没有错误,则应返回 204 状态 - 无内容 -).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP协议的PUT和DELETE及其在PHP中的使用 的相关文章

  • Php mysql 30秒后执行任务

    如何让 mysql 查询命令在访问 php 站点 30 秒后执行 您可以对执行 mysql 查询的 php 脚本发出 AJAX 请求 在 js 中使用计时器
  • 如何使用 PHP 从内容中查找 URL?

    需要一个简单的 preg match 它将在内容中查找 c aspx 不带引号 如果找到 它将返回整个 url 举个例子 content div 4 a href m c aspx mt 01 9310ba801f1255e02e411d8
  • HTTP Header Key 可以重复吗?

    在 JAVA HttpUrlConnection 中 请求 Header 设置的主要逻辑代码如下 public synchronized void set String k String v for int i nkeys i gt 0 i
  • 当用户再次访问同一页面时保持登录状态?

    目前我正在使用会话来登录用户 但是当我关闭浏览器并再次打开它时 我必须再次登录 你如何让用户在 2 周内保持登录状态 那么是通过cookie吗 那么您想要 在这台计算机上记住我 选项吗 这是一种与语言无关的方法 创建一个至少包含以下内容的数
  • 未找到“MongoId”类(带有 MongoDB Doctrine 的 Zend 框架)

    我目前正在尝试将 MongoDB 与 ZendFramework 中的 Doctrine 集成 我做了很多教程 在 StackOverflow 或其他地方 但没有任何效果 我一步步按照教程进行操作 http www bigwisu com
  • 如何使用 PHP 动态插入 CSS 类?

    下面的代码有什么问题 我想在相应的情况下动态插入 当前 CSS 类 li 单击元素 谢谢 section section li
  • PHP语言问题

    我有一个 php 页面 它将邮件发送到特定电子邮件 其中包含此页面表单中的数据 邮件必须以网站的母语 阿拉伯语 发送 但是当我单击表单上的提交按钮时 收到的邮件一半可读 阿拉伯语 另一部分不可读 符号 我想知道如何解决这个问题并且能够发送邮
  • HTTP_REFERER 返回 NULL,$_SERVER 中不存在密钥

    使用以来第一次 SERVER HTTP REFERER 它给了我NULL因此 当我做var dump SERVER the HTTP REFERER密钥不存在 我还尝试使用不同的浏览器和不同的网站访问网站 但没有结果 该网站在基于 Linu
  • 如何销毁一个物体?

    据我所知 很少 有两种方法 var new object Then Method 1 Set to null var null Method 2 Unset unset var 还有其他更好的方法吗 我在这里吹毛求疵吗 您正在寻找unset
  • 正则表达式替换混合数字+字符串

    我想删除所有包含数字的单词 示例 LW23 London W98 String 从上面的字符串中我唯一想保留的是 London String 这可以用正则表达式来完成吗 我目前正在使用 Python 但 PHP 代码也很好 Thanks E
  • PHP,文本从数据库中回显,没有换行,全部一体

    我的数据库中有一个长文本 从 php mayadmin 来看它看起来很好 但是当我将它回显到页面时 它会丢失所有格式 即没有新行 全部都在一个块中 有任何想法吗 Thanks 可能是因为换行符是 n 并且 html 想要 br 所以使用nl
  • 我的 PHP 代码不会将记录插入到 mySQL 数据库表中[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我的网站上
  • 如何在PHP中将图像从内存上传到AWS S3?

    所以我目前有一个使用 AWS S3 上传图像的上传系统 这是代码 Upload image to S3 s3 Aws S3 S3Client factory array key gt mykey secret gt myskey try s
  • 计算轮班工作时间并检测

    我有个问题 我的英语很差 我需要用PHP做一个加班计算 已经有一个代码可以实现这一点 但当工作时间超过2天时 计算就会出错 工作开始 2018 09 09 13 43 工作结束 2018 09 11 07 13 结果 07 18 04 00
  • WCF WebHttp 混合身份验证(基本和匿名)

    所有这些都与 WebHttp 绑定有关 托管在自定义服务主机中 IIS 目前不是一个选项 我已经实现了自定义 UserNamePasswordValidator 和自定义 IAuthorizationPolicy 当我将端点的绑定配置为使用
  • 将价格格式设置为逗号分隔

    在我的数据库中 我有类似的值 256 23 200 33 89 33 133 45 我必须将这些值乘以千 然后将结果格式化为价格 逗号分隔 256 23 x 1000 256230 I want to show this as 256 23
  • 如何在php中关闭夏令时

    我有这行代码将夏令时设置为 打开 将其设置为 关闭 的正确方法是什么 is daylight saving On rcmail config dst active bool date I date I 这是一个大写字母 i 当当前默认时区
  • 如何在 Django Rest 框架中编写“删除”操作的测试

    我正在为 Django Rest Framework API 编写测试 我一直在测试 删除 我对 创建 的测试工作正常 这是我的测试代码 import json from django urls import reverse from re
  • 在 Windows 上查看 PHP 文件夹

    我正在编写一个简单的 PHP 脚本来监视文件夹及其子文件夹的任何更改 新文件 修改 删除 然后执行操作 我将使用 Windows 上的命令行运行此脚本php f script php 我一直在寻找一种在 Windows 上观看具有 PHP
  • 使用 Unity 在 C# 中发送 http 请求

    如何使用 Unity 在 C 中发送 HTTP GET 和 POST 请求 我想要的是 在post请求中发送json数据 我使用Unity序列化器 所以不需要 新的 我只想在发布数据中传递一个字符串并且能够 将 ContentType 设置

随机推荐

  • 配置 nginx 和 uwsgi 时出现“没有此类文件或目录”错误

    更新 如果我不使用套接字并使用127 0 0 1 3031相反 一切正常 Nginx版本是1 6 3 uwsgi是2 0 11 1 etc uwsgi ini uwsgi uid uwsgi gid uwsgi pidfile run uw
  • Docker-Compose 上的 InfluxDB 无法读取 SSL 证书文件

    我在尝试使用在 Docker Compose 上运行的 InfluxDB v1 8 配置 SSL 时遇到一些问题 我跟着官方文档 https docs influxdata com influxdb v1 8 administration
  • Matlab:是否可以创建信号处理程序(.m 脚本)

    我查看了文档等 但没有看到任何明显的东西 我想要一个可以拦截的信号处理程序 C 或其他一些可用于中断长时间运行的脚本 每个离散计算通常 Matlab 确实有 COM 的事件处理程序 但它仅限于 Windows 而我处于 nix 环境中 如果
  • 在 AutoHotkey 中按住鼠标左键

    I want a script where pressing F1 makes AutoHotkey hold down the left mouse button I then want the script to release the
  • “事件驱动”和“面向对象”编程之间的关系是什么?

    如今 我几乎到处都听到 事件驱动 编程 维基百科说 在计算机编程中 事件驱动编程是一种编程范例 其中程序的流程由用户操作 鼠标单击 按键 传感器输出或来自其他程序 线程的消息等事件确定 事件驱动编程是图形用户界面和其他应用程序 例如 Jav
  • UIPicker 检测当前选定行上的点击

    我有一个UIPickerView和方法didSelectRow点击 a 时不会调用选定的行 我需要处理这个案子 有任何想法吗 首先 使类符合UIGestureRecognizerDelegate协议 然后 在视图设置中 UITapGestu
  • Python CSV 阅读器返回行作为列表

    我正在尝试使用 python 解析 CSV 并希望能够对一行中的项目进行索引 以便可以使用以下命令访问它们row 0 row 1 等等 到目前为止 这是我的代码 def get bitstats url http bitcoincharts
  • Swift 将数据从子视图发送到父视图控制器

    我正在开发一个应用程序 其中有一个视图控制器和子视图 在子视图上我正在加载谷歌地图 在主视图上我有一个标签 我的问题是如何将数据从子视图 地图地理位置 传递到主视图上的标签 并在使用 Swift 更新位置时更新该数据 我发现的所有教程都使用
  • 时间:2019-05-17 标签:c#progressbarnotupdate

    我有一个 ProgressBarWindow 它有一个进度条和一个取消按钮 我用它来报告文件 I O 的进度 然而 尽管所有工作都是在后台工作人员中完成的 但 ProgressBarWindow 的 UI 线程和我的主窗口都挂起 进度条已渲
  • 召回率和精确率后的分类准确率

    我只是想知道这是否是计算分类准确性的合法方法 获取精确召回阈值 对于每个阈值 对连续 y scores 进行二值化 从列联表 混淆矩阵 计算它们的准确性 返回阈值的平均准确度 recall precision thresholds prec
  • 复制构造函数和防御性复制

    什么是复制构造函数 有人可以分享一个有助于理解的小例子吗防御性复制原则 这是一个很好的例子 class Point final int x final int y Point int x int y this x x this y y Po
  • PHP Twitter API 分块上传问题:分段加起来不等于提供的总文件大小

    所以我将 Twitter API 集成到一个应用程序中 我需要它能够发布图像 视频和动画 GIF 我正在使用 php5 6 和 J7mbo twitter api php 包 到目前为止我的代码如下 file fopen realpath
  • 将文本项目符号添加到 C# 表单

    我正在用 C 创建一个表单 需要在表单上显示文本 我需要一些文本显示在带项目符号的无序列表中 使用标签时可以做到这一点吗 或者富文本框 我没有使用 ASP NET 这是针对桌面应用程序的 我的消息应该是这样的 要继续 请选择以下操作之一 单
  • IOError:[Errno 2]没有这样的文件或目录(当它确实存在时)Python [重复]

    这个问题在这里已经有答案了 我正在通过 python 中的 uart 传输文件文件夹 下面您可以看到简单的功能 但有一个问题 因为我收到如标题所示的错误 IOError Errno 2 No such file or directory 1
  • 在 EXCEL 中构建 SQL SELECT 语句

    我正在尝试在 Excel 中构建 SQL 语句 Sample 我正在尝试构建 sql 语句 但只想在 DIM 列中有值时添加列 因此 在 SQL 中执行时 SQL 看起来很整洁 没有任何语法错误 这里如何消除 from 关键字之前的多余逗号
  • 酿造更新破坏了什么?

    自制程序工作正常 直到我做了一个brew update 好几个月没有更新了 brew 更新完成后 每个brew命令会产生相同 相似的错误消息 usr local Library Homebrew global rb 6 in require
  • 两个菜单 Android 应用程序

    我工作的公司有一个 iOS 应用程序 它有两个滑动菜单 左侧一个用于导航 右侧一个显示应用程序范围的上下文信息和操作 iOS 应用程序有一个类似于 ActionBar 的小部件 在显示任一菜单时 意味着它是隐藏的 它会随主内容窗格一起滑动
  • TypeError:错误的参数类型类(预期模块)与控制器有关

    所以我有一个名为 guest controller rb 的控制器 如下所示 class GuestsController lt ApplicationController include Data def index display da
  • NSubstitute - 检查传递给方法的参数

    我们目前正在从 RhinoMocks 迁移到 NSubstitute 我有一个接受类型对象的方法DatabaseParams 该类具有以下结构 简化 public class DatabaseParams public string Sto
  • HTTP协议的PUT和DELETE及其在PHP中的使用

    介绍 我已阅读以下内容 超文本传输 协议 HTTP 是网络的生命 每次传输文档或发出 AJAX 请求时都会用到它 但令人惊讶的是 HTTP 在一些 Web 开发人员中相对陌生 HTTP 动词构成了 统一接口 约束的主要部分 并为我们提供了与