合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
在开发和推动 REST API 时,使用特定的自定义 HTTP 标头(如 X-HTTP 方法重写)会非常方便。部署基于 REST API 的 Web 服务时,可能会遇到 **[服务器]** 和 **[客户端]** 一方的访问限制。 一些防火墙不支持 PUT, DELETE 或者 PATCH 请求方法。 ----- [ 方法重写](https://github.com/kataras/iris/tree/master/middleware/methodoverride) 包装器允许你在客户端不支持它的地方使用 HTTP 谓词,如 PUT 或 DELETE。 # 服务器 ``` package main import ( "github.com/kataras/iris/v12" "github.com/kataras/iris/v12/middleware/methodoverride" ) func main() { app := iris.New() mo := methodoverride.New( // 默认值为 nil. // methodoverride.SaveOriginalMethod("_originalMethod"), // 默认值. // // methodoverride.Methods(http.MethodPost), // methodoverride.Headers("X-HTTP-Method", // "X-HTTP-Method-Override", // "X-Method-Override"), // methodoverride.FormField("_method"), // methodoverride.Query("_method"), ) // 注册 `WrapRouter` app.WrapRouter(mo) app.Post("/path", func(ctx iris.Context) { ctx.WriteString("post response") }) app.Delete("/path", func(ctx iris.Context) { ctx.WriteString("delete response") }) // [...app.Run] } ``` # 客户端 ``` fetch("/path", { method: 'POST', headers: { "X-HTTP-Method": "DELETE" }, }) .then((resp)=>{ // 响应正文将为"删除响应"。 })).catch((err)=> { console.error(err) }) ```