当前位置: 首页 > news >正文

ThinkPHP的“get\post\put\delete“请求

首先了解一下这四个请求的区别

1.GET 请求

用途:获取资源(只读操作,不修改服务器数据)。
特点:
参数通过 URL 的 查询字符串(Query String) 传递(例如 /book?id=1)。
数据在 URL 中可见,不安全(不适合敏感信息)。
幂等性:多次请求结果相同。
安全性:不会修改服务器资源。

2.POST 请求

用途:创建新资源(每次请求可能产生不同结果)。
特点:
参数通过 请求体(Request Body) 传递(支持 JSON、表单等格式)。
数据在 URL 中不可见,相对安全。
非幂等性:多次提交可能创建多个资源。

3.PUT 请求

用途:全量更新资源(要求客户端提供完整的资源数据)。
特点:
参数通过 请求体 传递(如 JSON)。
幂等性:多次请求结果相同(例如重复更新同一资源,最终状态一致)。
需要指定资源的唯一标识(如 /books/1)。

4.DELETE 请求

用途:删除资源。
特点:
通常不需要请求体,资源标识通过 URL 指定(如 /books/1)。
幂等性:多次删除同一资源,结果一致(第一次删除成功,后续返回 404)。

使用thinkphp创建四种请求的样例

1.get请求

注意这段代码是在controller层的,同时不能直接return 字符串以外别的类型,所以进行了json转换。

	#[Route("GET", "getPage")]
    public function page()
    {
        return json_encode(['1', '2']);
    }

请求结果
在这里插入图片描述

2.post请求

注意这段代码是在controller层的,是使用halt直接中断输出,他会里面的内容进行dump。

	#[Route("POST", "add")]
    public function add()
    {
        halt($this->request->post());
    }

请求结果
在这里插入图片描述

3.put请求

注意这段代码是在controller层的,isPut会判断请求类型是不是Put,其实在定制路由时就限制了请求类型,这里不判断也是可以的。

	#[Route("PUT", "update")]
    public function update()
    {
        if ($this->request->isPut()) {
            halt($this->request->param());
        }
    }

请求结果
在这里插入图片描述

4.delete请求

注意这段代码是在controller层的,可以在param里写你要接受的指定参数。

	#[Route("DELETE", "delete")]
    public function delete()
    {
        halt($this->request->param('id'));
    }

请求结果
在这里插入图片描述

完整代码

namespace app\controller;

use app\BaseController;
use think\annotation\route\Group;
use think\annotation\route\Route;

#[Group("Books")]
class Books extends BaseController
{
	#[Route("GET", "getPage")]
    public function page()
    {
        return json_encode(['1', '2']);
    }

	#[Route("POST", "add")]
    public function add()
    {
        halt($this->request->post());
    }

	#[Route("PUT", "update")]
    public function update()
    {
        if ($this->request->isPut()) {
            halt($this->request->param());
        }
    }
	
	#[Route("DELETE", "delete")]
    public function delete()
    {
        halt($this->request->param('id'));
    }
}

注意如果use think\annotation\route\Group; use think\annotation\route\Route;报错。
需要安装额外插件

composer require topthink/think-annotation

相关文章:

  • 基于Spring Boot的家庭理财系统app的设计与实现(LW+源码+讲解)
  • 黑盒测试的正交实验法
  • HTML Form Post 提交 无数据 的处理
  • 在线文档协作工具选型必看:14款产品对比
  • 汇编学习之《段寄存器》
  • go语言中的for range
  • 数据结构和算法——汉诺塔问题
  • ReBot:通过真实-到-模拟-到-真实的机器人视频合成扩展机器人学习
  • 【区块链安全 | 第二十一篇】类型之基础类型之间的转换
  • 组学数据分析实操系列 | (六)蛋白相互作用域可视化分析
  • Root Cause Analysis in Microservice Using Neural Granger Causal Discovery
  • linux详细安装/配置(mysql/nginx/tomcat)
  • DFS/BFS简介以及剪枝技巧
  • C语言解析JSON字符串指南(含结构体、结构体数组+使用cJSON)
  • python-leetcode 61.N皇后
  • 正则表达式(Regular Expression,简称 Regex)
  • Linux快速安装docker和docker-componse步骤
  • 文小言全新升级!多模型协作与智能语音功能带来更流畅的AI体验
  • linux进程信号 ─── linux第27课
  • JSON的基础知识
  • 独立网站与其他网站/长沙seo关键词
  • 新乡网站推广/大型门户网站建设
  • 淘宝上网站建设为啥这么便宜/5118数据分析平台官网
  • 搭建网站的必须条件/企业文化的重要性
  • 营销网站建设/山西太原百度公司
  • 做公司网站哪里好/seo快速排名工具