网站建设岗位叫什么,比较顺口的公司名字,沈阳网站开发招聘,任丘做网站用 Go 快速搭建一个 Coze #xff08;扣子#xff09; API 流式回复模拟接口#xff08;Mock Server#xff09;
在开发 Coze Bot 相关的前端功能时#xff0c;我们经常需要测试流式回复#xff08;SSE#xff09;的打字机效果、加载状态、停止响应、内容渲染等逻辑。但…用 Go 快速搭建一个 Coze 扣子 API 流式回复模拟接口Mock Server在开发 Coze Bot 相关的前端功能时我们经常需要测试流式回复SSE的打字机效果、加载状态、停止响应、内容渲染等逻辑。但直接调用真实的 Coze API 会消耗 token而且回复速度和内容不可控。下面分享一个纯 Go 实现的本地模拟接口只需几分钟就能跑起来完全兼容 Coze 的/v3/chat流式返回格式让你零成本、无限次地测试前端体验。功能亮点完美还原 Coze 的 SSE 流式结构event: conversation.message.deltadata: {content:...}逐字打字机效果延迟随机 50~150ms模拟真人输入支持 CORS前端直接调用无需额外配置回复内容支持 Markdown前端可直接渲染自动发送[DONE]结束标志代码简洁只有不到 100 行完整代码mock_coze.gopackagemainimport(fmtiolognet/httpstringstime)constproxyPort:8680funcmain(){http.HandleFunc(/coze-chat,mockHandler)log.Printf([MOCK] 模拟 Coze 接口已启动)log.Printf([MOCK] 监听地址: http://localhost%s/coze-chat,proxyPort)log.Printf([MOCK] 可直接用你原来的前端代码测试无需 token)log.Fatal(http.ListenAndServe(proxyPort,nil))}funcmockHandler(w http.ResponseWriter,r*http.Request){clientIP:r.RemoteAddr log.Printf([MOCK REQUEST] %s %s from %s,r.Method,r.URL.Path,clientIP)// 处理 CORS 预检ifr.Methodhttp.MethodOptions{w.Header().Set(Access-Control-Allow-Origin,*)w.Header().Set(Access-Control-Allow-Methods,POST, OPTIONS)w.Header().Set(Access-Control-Allow-Headers,Content-Type)w.Header().Set(Access-Control-Max-Age,86400)w.WriteHeader(http.StatusNoContent)return}ifr.Method!http.MethodPost{http.Error(w,Method Not Allowed,http.StatusMethodNotAllowed)return}// 读取请求体仅模拟可忽略内容_,_io.ReadAll(r.Body)deferr.Body.Close()// 设置 SSE 响应头w.Header().Set(Content-Type,text/event-stream)w.Header().Set(Cache-Control,no-cache)w.Header().Set(Connection,keep-alive)w.Header().Set(Access-Control-Allow-Origin,*)w.(http.Flusher).Flush()// 自定义回复内容支持 Markdown随时修改fullResponse:# 时尚审美评估师 **评判结果**好看 **理由** - 这件帽衫的深灰色非常百搭经典不过时适合各种肤色。 - 版型宽松舒适oversize 设计很有街头感显瘦又时髦。 - 帽绳和袖口细节处理精致质感看起来很不错棉感强不廉价。 - 前胸的小logo绣标低调有质感不会太张扬。 - 整体风格偏休闲运动风日常穿搭、约会、逛街都非常合适。 **搭配建议** - 下装黑色或深蓝牛仔裤 白球鞋经典安全 - 进阶卡其色工装裤 马丁靴更有层次 - 外搭短款羽绒服或风衣冬天显高 总体来说这件帽衫设计简洁大方性价比应该很高值得入手✨// 逐字输出模拟打字机效果for_,char:rangefullResponse{fmt.Fprintf(w,event: conversation.message.delta\n)fmt.Fprintf(w,data: {\id\:\mock123\,\conversation_id\:\mock\,\bot_id\:\mock\,\role\:\assistant\,\type\:\answer\,\content\:\%s\,\content_type\:\text\}\n\n,escapeJSON(string(char)))w.(http.Flusher).Flush()// 随机延迟模拟人类打字速度time.Sleep(time.Millisecond*time.Duration(50(char%100)))}// 发送结束标志fmt.Fprint(w,event: done\ndata: [DONE]\n\n)w.(http.Flusher).Flush()log.Printf([MOCK SUCCESS] 模拟回复完成共输出 %d 个字符,len(fullResponse))}// 简单 JSON 转义函数funcescapeJSON(sstring)string{sstrings.ReplaceAll(s,\\,\\\\)sstrings.ReplaceAll(s,\,\\\)sstrings.ReplaceAll(s,\n,\\n)sstrings.ReplaceAll(s,\r,\\r)returns}使用方法保存为mock_coze.go运行go run mock_coze.go前端保持原有调用方式URL 指向http://localhost:8680/coze-chat即可自定义回复内容只需修改fullResponse变量中的文本支持任意 Markdown 格式。例如想测试负面评价fullResponse:这件帽衫不太行颜色暗沉、版型臃肿建议再看看其他款或者测试超长回复、代码块、列表等都可以随意发挥。总结这个小工具极大提升了前端开发效率零成本、无限测试完全还原真实流式体验内容、速度可控支持前后端联调推荐所有在做 Coze Bot 前端交互的同学都备一个调试 UI、加载状态、打字动画时简直无敌好用