第50章 Iris 框架中发送 JSONP 响应的实战指南
第50章 JSONP Response
学习如何在 Iris 中发送 JSONP 响应。
基本 JSONP Response
```go package main
import "github.com/kataras/iris/v12"
func main() { app := iris.New()
app.Get("/jsonp", func(ctx iris.Context) { data := iris.Map{ "message": "Hello World", "status": "success", }
callback := ctx.URLParam("callback") ctx.JSONP(data, callback) })
app.Listen(":8080") } ```
自定义 JSONP 选项
```go app.Get("/custom", func(ctx iris.Context) { data := iris.Map{ "name": "John", "age": 25, }
callback := ctx.URLParam("callback") ctx.JSONP(data, callback, iris.JSONP{ Indent: " ", Prefix: ")]}',\n", }) }) ```
错误处理
```go app.Get("/error", func(ctx iris.Context) { callback := ctx.URLParam("callback") if callback == "" { ctx.StopWithError(iris.StatusBadRequest, fmt.Errorf("callback parameter is required")) return }
data := iris.Map{ "error": "Something went wrong", "code": 500, }
ctx.JSONP(data, callback) }) ```
最佳实践
安全性:验证 callback 参数、对输出进行转义、设置正确的响应头、处理错误、监控使用情况。
性能:启用压缩、缓存响应、控制响应体大小、处理超时、优化输出。
实现:遵循规范、处理错误、编写文档、充分测试、持续监控问题。
维护:定期更新、监控使用情况、及时修复安全问题、更新文档、审查代码。