From 4b86043a9481385b827420a83a6935d4eae8e599 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Wed, 6 May 2026 19:28:13 +0800 Subject: [PATCH] =?UTF-8?q?fix(admin-agency):=20set-primary=20=E7=94=A8=20?= =?UTF-8?q?PUT=20=E4=B8=8D=E6=98=AF=20POST?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ix_admin_set_primary_method_post_to_put.md | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 changelogs/2026-05/06_fix_admin_set_primary_method_post_to_put.md diff --git a/changelogs/2026-05/06_fix_admin_set_primary_method_post_to_put.md b/changelogs/2026-05/06_fix_admin_set_primary_method_post_to_put.md new file mode 100644 index 0000000..8de357b --- /dev/null +++ b/changelogs/2026-05/06_fix_admin_set_primary_method_post_to_put.md @@ -0,0 +1,53 @@ +# fix(agency-admin): set-primary 接口必须用 PUT 不是 POST + +**日期**: 2026-05-06 20:30 +**通知对象**: @mmg (前端) +**关联 BUG 反馈**: 用户报 `http://localhost:9527/admin/travel-agency/2051985889785012226/set-primary` 报"请求方法不支持: POST" + +--- + +## 一、根因(前端 BUG) + +后端 `AdminTravelAgencyController.setPrimary` 在 `hl-order-service-v2/src/main/java/com/hulalv/agency/controller/admin/AdminTravelAgencyController.java:99-104` 是 **`@PutMapping`**: + +```java +@PutMapping("/{id}/set-primary") +@ApiOperation("设为主体公司(SUPER_ADMIN)") +public Result setPrimary(@PathVariable("id") Long id) { + agencyService.setPrimary(id); + return Result.success(); +} +``` + +前端发的是 **`POST`** → 网关 `MethodArgumentNotSupportedException` 返"请求方法不支持: POST"。 + +## 二、为什么后端用 PUT + +REST 语义 + 同模块其他**状态变更**接口都是 PUT(保持一致): +- `PUT /admin/travel-agency/{id}/disable` 停用 +- `PUT /admin/travel-agency/{id}/enable` 启用 +- `PUT /admin/travel-agency/{id}/set-primary` 设为主体 ← 同一类语义 + +`POST /admin/travel-agency` 用于"新建公司"(资源创建),不在状态变更范畴。 + +## 三、前端修复 + +把"设为主体"按钮的 API 调用从: + +```js +http.post(`/admin/travel-agency/${id}/set-primary`) +``` + +改为: + +```js +http.put(`/admin/travel-agency/${id}/set-primary`) +``` + +## 四、为什么不改后端 + +如果改后端为 POST,会和 `disable` / `enable` 同模式风格冲突,REST 语义不一致 — 后续看代码的人会困惑"为啥状态变更有 PUT 又有 POST"。 + +## 五、不建工单 + +按规则前端 BUG 都走 changelog,不建 wx/HL 或 wx/hl-ui issue。