电话

0411-31978321

微信小程序delete请求(为什么 body 内容没有语义定义)

标签: 2024-06-08 

微信小程序 DELETE 请求:Body 的语义之谜

前言

各位小程序开发者,你们好!今天我们来聊聊 DELETE 请求在小程序中的一个有趣现象:body 居然没有语义定义!虽然有点反直觉,但这个特性确有其道理,并且了解它对优化你的小程序代码非常有帮助。

为什么 DELETE 不像 GET/POST 一样传参?

分析「小程序做删除的时候,请求用的是delete时,按平时做GET,POST时的方式传参,后台接收不到参数。」

回答:

与 GET/POST 请求不同,DELETE 请求不使用 body 来传递参数。这是因为 DELETE 请求的目的是删除资源,而不是创建或更新。body 中包含的参数在删除操作中是没有意义的。

谁规定了 DELETE 没有 body 语义?

分析「DELETE 请求消息中的 payload (metadata 和 body content) 没有定义语义;在DELETE 请求上发送一个 payload body 可能会导致一些现有的实现拒绝该。」

回答:

HTTP 协议本身就没有为 DELETE 请求定义 body 语义。不同的服务器端实现可能会对带有 body 的 DELETE 请求产生不同的解释。为了避免不兼容微信官方建议小程序开发者在 DELETE 请求中不使用 body。

但是,DELETE 请求也能传参啊!

分析「三、数据的删除1、在模板文件中创建一个按钮2、在脚本逻辑文件中写下delete的函数组件3、在创建成功之后。」

回答:

虽然 DELETE 请求没有正式的 body 语义,但小程序提供了变通方法,允许开发者通过 URL 查询参数传递参数。这本质上与 GET 请求类似,但由于使用了 DELETE 方法,因此仍保留了删除资源的语义。

DELETE 请求查询参数

参数名 目的 示例
id 要删除的资源 ID ?id=123
name 要删除的资源名称 ?name=my-resource

疑DELETE 请求的好处是什么?

分析

回答:

使用 DELETE 请求的主要好处是它明确了请求的删除意图。与 POST 请求不同,DELETE 请求不会意外地创建或更新资源。这有助于防止数据损坏和安全

什么时候应该使用 DELETE 请求?

分析

回答:

DELETE 请求通常用于以下场景:

场景 示例
删除单个资源 /todos/123
批量删除资源 /todos?ids=123,456
删除根据条件筛选的资源 /todos?completed=true

有趣的尾声:

了解 DELETE 请求的 body 语义特性不仅有助于避免代码还能让你对 HTTP 协议有更深入的理解。所以,下次在使用微信小程序进行数据删除时,请记住:DELETE 无需 body,用查询参数传递参数即可!

你在小程序开发中遇到过 DELETE 请求的 body 问题吗?你是如何解决的?

你认为 DELETE 请求没有 body 语义是否是一个好的设计决定?为什么或为什么不?