Go語言實戰案例:簡易JSON數據返回

在現代 Web 應用中,JSON 已成為前后端通信的主流數據格式。Go 語言標準庫內置對 JSON 的良好支持,只需少量代碼就能返回結構化的 JSON 響應。

本篇案例將手把手帶你完成一個「返回 JSON 數據的 HTTP 接口」,幫助你理解如何用 Go 語言實現后端服務最基礎的功能。


一、目標說明

構建一個 HTTP 服務:

  • ? 請求地址:/hello
  • ? 請求方式:GET
  • ? 返回內容:
    {"message":?"Hello,?Go!","status":?200
    }

二、核心知識點

  • ??net/http:Go 標準 HTTP 庫
  • ??encoding/json:JSON 編解碼包
  • ??http.ResponseWriter:響應寫入器
  • ??http.HandleFunc:注冊處理函數

三、完整代碼示例

package?mainimport?("encoding/json""net/http"
)type?Response?struct?{Message?string?`json:"message"`Status??int????`json:"status"`
}func?helloHandler(w?http.ResponseWriter,?r?*http.Request)?{//?設置返回頭信息w.Header().Set("Content-Type",?"application/json")w.WriteHeader(http.StatusOK)//?創建響應結構體resp?:=?Response{Message:?"Hello,?Go!",Status:??200,}//?編碼為?JSON?并寫入響應json.NewEncoder(w).Encode(resp)
}func?main()?{http.HandleFunc("/hello",?helloHandler)http.ListenAndServe(":8080",?nil)
}

四、運行與測試

1. 運行服務
go?run?main.go

訪問瀏覽器或使用?curl

curl?http://localhost:8080/hello
2. 響應結果
{"message":?"Hello,?Go!","status":?200
}

五、快速問答(FAQ)

? 為什么要設置?Content-Type: application/json

告訴瀏覽器或客戶端,我們返回的是 JSON 格式數據。

??json.NewEncoder(w).Encode(...)?做了什么?

它將結構體編碼為 JSON 并直接寫入到?ResponseWriter?輸出流。

? 如果編碼失敗會發生什么?

Encode()?會返回 error,可以用?if err != nil?判斷并手動寫入 500 錯誤。


六、延伸練習

  1. 1. 返回一個包含用戶列表的 JSON 數組;
  2. 2. 增加 POST 方法處理 JSON 請求體;
  3. 3. 返回當前時間戳;
  4. 4. 返回分頁數據結構。

七、總結

本案例實現了一個 Go 最小可用的 JSON 接口:

? 使用標準庫,無需第三方框架
? 面向新手,極易上手
? 為構建 RESTful API 打下基礎


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/918142.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/918142.shtml
英文地址,請注明出處:http://en.pswp.cn/news/918142.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

扣子Coze中的觸發器實現流程自動化-實現每日新聞卡片式推送

基礎知識 什么是觸發器/能做什么 Triggers 智能體設置觸發器(Triggers),使智能體在特定時間或接收到特定事件時自動執行任務。為什么需要觸發器?實操步驟 第1步:打開一個智能體編輯頁第2步:技能 - 觸發器 -…

GitCode 7月:小程序積分商城更名成長中心、「探索智能倉頡!Cangjie Magic 體驗有獎征文活動」圓滿收官、深度對話欄目持續熱播

運營情況總結 🎉 截至7月底,GitCode 這個熱鬧的開發者社區,已經聚集了 656 萬位開發者小伙伴啦! 💻 產品:小程序積分商城更名為成長中心啦,更多功能將陸續上線。 🌟 G-Star&#xff…

機器學習之支持向量機(原理)

目錄 摘要 一、概述 二、SVM算法定義 1.超平?最?間隔介紹 2.硬間隔和軟間隔 1.硬間隔分類 2. 軟間隔分類 三、SVM算法原理 1 定義輸?數據 2 線性可分?持向量機 3 SVM的計算過程與算法步驟 四、核函數 五、SVM算法api介紹 1. 核心參數說明 2. 主要方法 3. 重…

【Unity3D實例-功能-跳躍】角色跳躍

今天,我們來聊聊 Unity 里最常打交道的動作之一——角色跳躍。無論是橫版闖關還是 3D 跑酷,跳躍都是讓角色“活”起來的核心操作。在 Unity 里,幾行腳本就能讓角色一蹬而起、穩穩落地。下面,就讓我們一起把這個“彈跳感”親手做出…

react+echarts實現變化趨勢縮略圖

如上圖,實現一個縮略圖。 import React, { useState, useEffect } from react; const ParentCom () > {const [data, setData] useState({});useEffect(() > {// 這里可以做一些接口請求等操作setData({isSheng: false, value: 11.24, percentage: 2.3%, da…

C語言宏相關操作

宏 宏名稱通常都是由大寫英文字母構成的宏名稱里不可以包含空格用宏給數字起名字的時候不可以使用賦值運算符,不要自增自減可以在編寫程序的時候直接使用宏名稱替代數字,編譯器在編譯的時候會把程序里的宏替換成它所代表的數字 1. 為什么要使用宏&#x…

STM32內部讀寫FLASH

很多情況下,在STM32中寫入一些數據,在某些不可控因素下其數據無法保存。因此,解決此問題就要用到FLASH.什么是內部 Flash? Flash 是一種非易失性存儲器,STM32 的程序和常量數據就存在 Flash 中。它的關鍵特點是:特性說…

Oracle 12c + Pl/Sql windows系統下表空間創建、遷移,dmp備份導入,數據庫字符集更改

一、開發環境 操作系統:win11 Oracle版本:12c Oracle 數據庫字符集:AL32UTF8 Pl/Sql版本:14 二、表空間創建 表空間是 Oracle 數據庫中一種重要的邏輯結構,它是數據庫中數據文件的邏輯集合,用于存儲數據庫對…

GUI:QT簡介

一、什么是QT?Qt是一套跨平臺的 C 圖形用戶界面(GUI)應用程序開發框架,由挪威 Trolltech(奇趣科技)于 1991 年創建,2008 年被諾基亞收購,2012 年后由 Qt Company 負責維護。它廣泛應…

oceanbase執行execute immediate create table提示無權限

問題:OB庫4.2.5.4版本,執行到這一句的時候,報沒有權限:[rootlnob ~]# obclient -h192.168.207.28 -P2881 -ugistarlnzyob -pxxxxxx -A Welcome to the OceanBase. Commands end with ; or \g. Your OceanBase connection id is 3…

滴滴招java開發

滴滴集團 北京(崗位信息已經過jobleap.cn授權,可在csdn發布)收錄時間: 2025年08月01日職位描述 負責滴滴海外業務準入審核及反作弊相關系統的后端開發及系統維護; 職位要求 1、統招本科及以上學歷,計算機科…

深入解析基于Zookeeper分布式鎖在高并發場景下的性能優化實踐指南

深入解析基于Zookeeper分布式鎖在高并發場景下的性能優化實踐指南 在大規模分布式系統中,如何保證多個節點對同一資源的有序訪問,是提高系統穩定性與一致性的核心需求之一。Zookeeper 提供的分布式鎖機制,以其簡潔的原理和高可靠性&#xff0…

騰訊云CodeBuddy AI IDE+CloudBase AI ToolKit打造理財小助手網頁

CodeBuddy 騰訊云CodeBuddy AI IDECloudBase AI ToolKit打造理財小助手網頁 在線體驗地址:理財小助手 在線倉庫:https://cnb.cool/pickstars-2025/ai-financial-assistant 🌟 Hello,我是摘星! 🌈 在彩虹般…

2025-08-08 李沐深度學習11——深度學習計算

文章目錄1 模型構造1.1 自定義 MLP(多層感知機)1.1.1 __init__ (構造函數)1.1.2 forward (前向傳播)1.2 使用自定義 MLP1.3 自定義 Sequential 類1.4 前向傳播1.5 模塊的嵌套使用2 參數管理2.1 參數訪問2.2 嵌套模型2.3 參數初始化2.4 參數共享3 自定義層…

匯編語言和高級語言的差異

匯編語言與高級語言在以下幾個方面存在重要的區別:缺少結構化流程控制。匯編語言不提供if/else、switch/case、for、while等高級控制結構,依賴于底層的無條件跳轉和條件跳轉指令來實現流程控制。這種基于標簽和跳轉的方式雖然極其靈活,但缺乏…

文件管理從基礎到高級:文件描述符、超大文件切片重組與快速刪除實戰

文件管理從基礎到高級:文件描述符、超大文件切片重組與快速刪除實戰目標讀者:Linux/macOS 用戶、后端/運維/數據工程師 環境默認:Linux(GNU 工具鏈),macOS 類似;Windows 可使用 WSL1&#xff09…

RPC 解析

RPC(Remote Procedure Call,遠程過程調用)是一種讓分布式系統中的服務能夠像調用本地函數一樣調用遠程服務的通信機制。以下是其核心原理、技術實現及組件的詳細解析:🔧 一、RPC 核心工作原理(10 步全流程&…

wstool的一個完整的工作流解析

moveit的倉庫源碼編譯的時候使用的是wstool來拉取倉庫的所有內容文件,其命令流程如下: wstool init src wstool merge -t src https://raw.githubusercontent.com/moveit/moveit/master/moveit.rosinstall wstool update -t src rosdep install -y --from-paths src…

對數函數分段定點實現

目錄 一、原理介紹 二、代碼實現 三、結果顯示 四、移植到C語言中的應用 4.1. 定義定點數配置和參數 4.2. 實現分段查找函數 4.3. 實現 log10 近似計算函數 4.4. (可選)定點數轉浮點數 一、原理介紹 之前的博文對數函數分段線性實…

qt系統--事件

文章目錄qt系統事件處理鼠標事件鼠標移動事件處理鍵盤事件定時器事件窗口移動和大小改變事件結語很高興和大家見面,給生活加點impetus!!開啟今天的編程之路!! 作者:?( ‘ω’ )?260 我的專欄&#xff1a…