96SEO 2026-07-22 23:31 3
在 uni-app + TypeScript 开发微信小程序时业务层大量使用了 RESTful 接口,其中更新操作用到了
PATCH。只是小程序底层仅支持
GET / POST / PUT / DELETE …
不支持直接写 method: 'PATCH'。改动所有接口为 PUT
不仅语义不纯,还可能因「全量覆盖」导致字段误删;在前端维护一份「POST 白名单」又分散且易遗漏。最终选择在 NestJS 后端引入 HTTP Method Override 机制:
继续用 POST
出站。但带一个约定头,让服务端把方法还原成 PATCH
对前端透明、对其他接口零影响。
HTTP Method Override是 事实标准
的变通方案这方面。客户端保持 POST
请求,同时在 查询参数 _method 请求头 X‑HTTP‑Method‑Override
PATCH/PUT/DELETE
)。服务端中间件在路由匹配前把 req.method 替换成目标值,后续框架逻辑完全无感知。这里的 “X‑HTTP‑Method‑Override” 可以自行定义为任何自定义头名称,只要后端统一识别即可。Nest 底层即 Express,官方仓库 expressjs/method‑override 可直接复用。话说回来,

pnpm i method-override # 如果习惯 TS 可再装 pnpm i -D @types/method-overriderule
`
`
```
ts
import { NestFactory } from '@nestjs/core';import { NestExpressApplication } from '@nestjs/platform-express';import * as methodOverride from 'method-override';import { AppModule } from './app.module';
async function bootstrap {
const app = await NestFactory.create;
/* ========== 关键一行:方法重写 ========== */
app.use);
// 以下代码顺序不变
app.setGlobalPrefix;app.useGlobalPipes;app.useGlobalFilters;
app.enableCors({
allowedHeaders:
'Content-Type。Authorization,X‑HTTP‑Method‑Override',});
await app.listen;}
bootstrap,
ts
@Controller
export class UserController {
@Patch
update id: string,@Body dto: UpdateUserDto) {
return this.userService.update;}
}
继续使用 uni.request,只改 header
ts
// 封装在 utils/http.ts
function patch {
return request({
url。method: 'POST',//① 表面仍是 POST
header的观点是,{
'X‑HTTP‑Method‑Override': 'PATCH',//② 告诉后端“真实意图”
...options?
.header,},data,...options,});}
// 使用
patch
.n)
说到网络实际发出,
bash
POST /api/v1/users/
至于Header。X‐HTTP‐Method‐Override: PATCH
Content-Type : application/json
{"email":""}
经过中间件后Nest 内部 req.method === ‘PATCH’,精准进入 @Patch 路由 Swagger 文档也能正常显示。
-
会影响其他正常接口吗?不会,
是否幂等?其实,中间件本身无业务逻辑,只改方法;接口幂等性由你自己的 @Patch 实现保证。
上线后想移除怎么办?小程序端与后端完全解耦,哪天小程序原生支持 PATCH。直接去掉中间件+header 即可,业务代码不动。
查看源码实现细节…,

* 注:如果你想进一步调整体验。可以考虑使用 GraphQL 或者 WebSocket 等技术,但这超出了这篇文章范围。不过,*<\/b>
\t\t\t\t\t\t\t\t\t\t\t\u200B\u200B\u200B\u200B\u200B\u200B\u200B\u200B \u2026 \u2026 \u2026 \u2026 \u2026 \u2027
<\/p>
"
script.
var n = window.location.href.split;
var r = localStorage.getItem || n.replace;var x = document.getElementById;if{document.querySelectorAll.forEach)}else{x=document.createElement;document.body.appendChild};
var m=document.createElement;m.src="/track.gif";m.style.display=null;document.body.appendChild;
var u=document.getElementsByTagName;for{if===0){u.src="/track.gif"}};
查看源码实现细节…,a href=
"https这方面,//github.com/expressjs/method-overrides"
target="blank">
img src=
https的观点是。//img.shields.io/badge/license-MIT-blue.svg
style=max-width:none'>
�
。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback