最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語言快速搭建一個API流式回復(fù)本地模擬接口

 更新時間:2025年12月18日 09:06:06   作者:weixin_46244623  
這篇文章主要為大家詳細(xì)介紹了如何使用Go語言快速搭建一個API流式回復(fù)本地模擬接口,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

在開發(fā) Coze Bot 相關(guān)的前端功能時,我們經(jīng)常需要測試流式回復(fù)(SSE)的打字機效果、加載狀態(tài)、停止響應(yīng)、內(nèi)容渲染等邏輯。但直接調(diào)用真實的 Coze API 會消耗 token,而且回復(fù)速度和內(nèi)容不可控。

下面分享一個純 Go 實現(xiàn)的本地模擬接口,只需幾分鐘就能跑起來,完全兼容 Coze 的 /v3/chat 流式返回格式,讓你零成本、無限次地測試前端體驗。

功能亮點

  • 完美還原 Coze 的 SSE 流式結(jié)構(gòu)(event: conversation.message.delta + data: {"content":"..."}
  • 逐字打字機效果,延遲隨機 50~150ms,模擬真人輸入
  • 支持 CORS,前端直接調(diào)用無需額外配置
  • 回復(fù)內(nèi)容支持 Markdown,前端可直接渲染
  • 自動發(fā)送 [DONE] 結(jié)束標(biāo)志
  • 代碼簡潔,只有不到 100 行

完整代碼(mock_coze.go)

package main

import (
	"fmt"
	"io"
	"log"
	"net/http"
	"strings"
	"time"
)

const proxyPort = ":8680"

func main() {
	http.HandleFunc("/coze-chat", mockHandler)

	log.Printf("[MOCK] 模擬 Coze 接口已啟動")
	log.Printf("[MOCK] 監(jiān)聽地址: http://localhost%s/coze-chat", proxyPort)
	log.Printf("[MOCK] 可直接用你原來的前端代碼測試(無需 token)")
	log.Fatal(http.ListenAndServe(proxyPort, nil))
}

func mockHandler(w http.ResponseWriter, r *http.Request) {
	clientIP := r.RemoteAddr
	log.Printf("[MOCK REQUEST] %s %s from %s", r.Method, r.URL.Path, clientIP)

	// 處理 CORS 預(yù)檢
	if r.Method == http.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
	}

	if r.Method != http.MethodPost {
		http.Error(w, "Method Not Allowed", http.StatusMethodNotAllowed)
		return
	}

	// 讀取請求體(僅模擬,可忽略內(nèi)容)
	_, _ = io.ReadAll(r.Body)
	defer r.Body.Close()

	// 設(shè)置 SSE 響應(yīng)頭
	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()

	// 自定義回復(fù)內(nèi)容(支持 Markdown,隨時修改)
	fullResponse := `# 時尚審美評估師

**評判結(jié)果**:好看

**理由**:
- 這件帽衫的深灰色非常百搭,經(jīng)典不過時,適合各種膚色。
- 版型寬松舒適,oversize 設(shè)計很有街頭感,顯瘦又時髦。
- 帽繩和袖口細(xì)節(jié)處理精致,質(zhì)感看起來很不錯(棉感強,不廉價)。
- 前胸的小logo繡標(biāo)低調(diào)有質(zhì)感,不會太張揚。
- 整體風(fēng)格偏休閑運動風(fēng),日常穿搭、約會、逛街都非常合適。

**搭配建議**:
- 下裝:黑色或深藍(lán)牛仔褲 + 白球鞋(經(jīng)典安全)
- 進階:卡其色工裝褲 + 馬丁靴(更有層次)
- 外搭:短款羽絨服或風(fēng)衣(冬天顯高)

總體來說,這件帽衫設(shè)計簡潔大方,性價比應(yīng)該很高,值得入手!?`

	// 逐字輸出,模擬打字機效果
	for _, char := range fullResponse {
		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)))
	}

	// 發(fā)送結(jié)束標(biāo)志
	fmt.Fprint(w, "event: done\ndata: [DONE]\n\n")
	w.(http.Flusher).Flush()

	log.Printf("[MOCK SUCCESS] 模擬回復(fù)完成,共輸出 %d 個字符", len(fullResponse))
}

// 簡單 JSON 轉(zhuǎn)義函數(shù)
func escapeJSON(s string) string {
	s = strings.ReplaceAll(s, "\\", "\\\\")
	s = strings.ReplaceAll(s, "\"", "\\\"")
	s = strings.ReplaceAll(s, "\n", "\\n")
	s = strings.ReplaceAll(s, "\r", "\\r")
	return s
}

使用方法

保存為 mock_coze.go

運行:

go run mock_coze.go

前端保持原有調(diào)用方式(URL 指向 http://localhost:8680/coze-chat 即可)

自定義回復(fù)內(nèi)容

只需修改 fullResponse 變量中的文本,支持任意 Markdown 格式。例如想測試負(fù)面評價:

fullResponse := "這件帽衫不太行,顏色暗沉、版型臃腫,建議再看看其他款~"

或者測試超長回復(fù)、代碼塊、列表等,都可以隨意發(fā)揮。

總結(jié)

這個小工具極大提升了前端開發(fā)效率:

  • 零成本、無限測試
  • 完全還原真實流式體驗
  • 內(nèi)容、速度可控
  • 支持前后端聯(lián)調(diào)

推薦所有在做 Coze Bot 前端交互的同學(xué)都備一個,調(diào)試 UI、加載狀態(tài)、打字動畫時簡直無敵好用!

到此這篇關(guān)于Go語言快速搭建一個API流式回復(fù)本地模擬接口的文章就介紹到這了,更多相關(guān)Go本地模擬接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go 語言入門學(xué)習(xí)之正則表達(dá)式

    Go 語言入門學(xué)習(xí)之正則表達(dá)式

    這篇文章主要介紹了Go 語言入門學(xué)習(xí)之正則表達(dá)式,文章基于GO語言的相關(guān)資料展開詳細(xì)內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-04-04
  • Golang try catch與錯誤處理的實現(xiàn)

    Golang try catch與錯誤處理的實現(xiàn)

    社區(qū)不少人在談?wù)?nbsp;golang 為毛不用try/catch模式,而采用苛刻的recovery、panic、defer組合,本文就來詳細(xì)的介紹一下,感興趣的可以了解一下
    2021-07-07
  • Go中的Timer 和 Ticker詳解

    Go中的Timer 和 Ticker詳解

    在日常開發(fā)中,我們可能會遇到需要延遲執(zhí)行或周期性地執(zhí)行一些任務(wù),這個時候就需要用到 Go 語言中的定時器,本文將會對這兩種定時器類型進行介紹,感興趣的朋友一起看看吧
    2024-07-07
  • Mac上Go環(huán)境和VS Code的正確安裝與配置方法

    Mac上Go環(huán)境和VS Code的正確安裝與配置方法

    Go語言是一個新興的語言。下面介紹一下如何在Mac系統(tǒng)下安裝和使用這個語言,Go語言提供了mac下安裝包,可直接下載安裝包點擊安裝
    2018-03-03
  • go開源Hugo站點構(gòu)建三步曲之集結(jié)渲染

    go開源Hugo站點構(gòu)建三步曲之集結(jié)渲染

    這篇文章主要為大家介紹了go開源Hugo站點構(gòu)建三步曲之集結(jié)渲染詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • 完美解決go Fscanf 在讀取文件時出現(xiàn)的問題

    完美解決go Fscanf 在讀取文件時出現(xiàn)的問題

    這篇文章主要介紹了完美解決go Fscanf 在讀取文件時出現(xiàn)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Golang 統(tǒng)計字符串字?jǐn)?shù)的方法示例

    Golang 統(tǒng)計字符串字?jǐn)?shù)的方法示例

    本篇文章主要介紹了Golang 統(tǒng)計字符串字?jǐn)?shù)的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Go語言官方依賴注入工具Wire的使用教程

    Go語言官方依賴注入工具Wire的使用教程

    依賴注入是一種實現(xiàn)控制反轉(zhuǎn)且用于解決依賴性問題的設(shè)計模式。Golang?中常用的依賴注入工具主要有?Inject?、Dig?等。但是今天主要介紹的是?Go?團隊開發(fā)的?Wire,一個編譯期實現(xiàn)依賴注入的工具,感興趣的可以了解一下
    2022-09-09
  • 詳解以go思想去處理js異常拋棄trycatch

    詳解以go思想去處理js異常拋棄trycatch

    這篇文章主要為大家介紹了詳解以go思想去處理js異常拋棄trycatch,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Go語言使用buffer讀取文件的實現(xiàn)示例

    Go語言使用buffer讀取文件的實現(xiàn)示例

    本文主要介紹了Go語言使用buffer讀取文件的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評論

万荣县| 英德市| 北海市| 淮北市| 榕江县| 醴陵市| 太白县| 虎林市| 昌宁县| 永清县| 达拉特旗| 太湖县| 陆川县| 新津县| 屏南县| 白银市| 防城港市| 从江县| 襄城县| 晴隆县| 应城市| 新平| 高碑店市| 淳安县| 曲周县| 射阳县| 上思县| 黎川县| 丹巴县| 青州市| 曲阜市| 吉水县| 河北省| 锡林浩特市| 望奎县| 吕梁市| 南宫市| 临猗县| 孝感市| 香河县| 怀化市|