欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語(yǔ)言JSON數(shù)據(jù)返回的實(shí)戰(zhàn)案例

 更新時(shí)間:2025年08月14日 10:12:54   作者:程序員愛(ài)釣魚  
本文介紹用Go標(biāo)準(zhǔn)庫(kù)構(gòu)建返回JSON的HTTP接口,包括GET請(qǐng)求處理、JSON編碼及響應(yīng)設(shè)置,為RESTful API開(kāi)發(fā)打下基礎(chǔ),感興趣的可以了解一下

在現(xiàn)代 Web 應(yīng)用中,JSON 已成為前后端通信的主流數(shù)據(jù)格式。Go 語(yǔ)言標(biāo)準(zhǔn)庫(kù)內(nèi)置對(duì) JSON 的良好支持,只需少量代碼就能返回結(jié)構(gòu)化的 JSON 響應(yīng)。

本篇案例將手把手帶你完成一個(gè)「返回 JSON 數(shù)據(jù)的 HTTP 接口」,幫助你理解如何用 Go 語(yǔ)言實(shí)現(xiàn)后端服務(wù)最基礎(chǔ)的功能。

一、目標(biāo)說(shuō)明

構(gòu)建一個(gè) HTTP 服務(wù):

請(qǐng)求地址:/hello

請(qǐng)求方式:GET

返回內(nèi)容:

{
  "message": "Hello, Go!",
  "status": 200
}

二、核心知識(shí)點(diǎn)

  • net/http:Go 標(biāo)準(zhǔn) HTTP 庫(kù)
  • encoding/json:JSON 編解碼包
  • http.ResponseWriter:響應(yīng)寫入器
  • http.HandleFunc:注冊(cè)處理函數(shù)

三、完整代碼示例

package main

import (
    "encoding/json"
    "net/http"
)

type Response struct {
    Message string `json:"message"`
    Status  int    `json:"status"`
}

func helloHandler(w http.ResponseWriter, r *http.Request) {
    // 設(shè)置返回頭信息
    w.Header().Set("Content-Type", "application/json")
    w.WriteHeader(http.StatusOK)

    // 創(chuàng)建響應(yīng)結(jié)構(gòu)體
    resp := Response{
        Message: "Hello, Go!",
        Status:  200,
    }

    // 編碼為 JSON 并寫入響應(yīng)
    json.NewEncoder(w).Encode(resp)
}

func main() {
    http.HandleFunc("/hello", helloHandler)
    http.ListenAndServe(":8080", nil)
}

四、運(yùn)行與測(cè)試

1. 運(yùn)行服務(wù)

go run main.go

訪問(wèn)瀏覽器或使用 curl

curl http://localhost:8080/hello

2. 響應(yīng)結(jié)果

{
  "message": "Hello, Go!",
  "status": 200
}

五、快速問(wèn)答(FAQ)

? 為什么要設(shè)置Content-Type: application/json?

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

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

它將結(jié)構(gòu)體編碼為 JSON 并直接寫入到 ResponseWriter 輸出流。

? 如果編碼失敗會(huì)發(fā)生什么?

Encode() 會(huì)返回 error,可以用 if err != nil 判斷并手動(dòng)寫入 500 錯(cuò)誤。

六、總結(jié)

本案例實(shí)現(xiàn)了一個(gè) Go 最小可用的 JSON 接口:

? 使用標(biāo)準(zhǔn)庫(kù),無(wú)需第三方框架
? 面向新手,極易上手
? 為構(gòu)建 RESTful API 打下基礎(chǔ)

到此這篇關(guān)于Go語(yǔ)言JSON數(shù)據(jù)返回的實(shí)戰(zhàn)案例的文章就介紹到這了,更多相關(guān)Go語(yǔ)言 JSON數(shù)據(jù)返回內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang 如何判斷數(shù)組某個(gè)元素是否存在 (isset)

    Golang 如何判斷數(shù)組某個(gè)元素是否存在 (isset)

    這篇文章主要介紹了Golang 如何判斷數(shù)組某個(gè)元素是否存在 (isset),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • GO實(shí)現(xiàn)基于命令行的簡(jiǎn)單IPS程序代碼

    GO實(shí)現(xiàn)基于命令行的簡(jiǎn)單IPS程序代碼

    本文介紹了入侵防御系統(tǒng)IPS的工作原理和實(shí)現(xiàn),IPS通過(guò)網(wǎng)絡(luò)流量監(jiān)控和實(shí)時(shí)響應(yīng),防止網(wǎng)絡(luò)攻擊,通過(guò)使用Go語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的IPS示例程序,展示了如何獲取本地IP地址和探測(cè)網(wǎng)絡(luò)中其他設(shè)備的IP地址,包括如何定義和加載規(guī)則文件,以及如何檢測(cè)IP對(duì)相應(yīng)端口的訪問(wèn)是否達(dá)到規(guī)定閾值
    2024-12-12
  • Golang10進(jìn)制轉(zhuǎn)16進(jìn)制的幾種方法代碼示例

    Golang10進(jìn)制轉(zhuǎn)16進(jìn)制的幾種方法代碼示例

    這篇文章主要給大家介紹了關(guān)于Golang10進(jìn)制轉(zhuǎn)16進(jìn)制的幾種方法,進(jìn)制轉(zhuǎn)換是Golang的一些基本操作,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • go貨幣計(jì)算時(shí)如何避免浮點(diǎn)數(shù)精度問(wèn)題

    go貨幣計(jì)算時(shí)如何避免浮點(diǎn)數(shù)精度問(wèn)題

    在開(kāi)發(fā)的初始階段,我們經(jīng)常會(huì)遇到“浮點(diǎn)數(shù)精度”和“貨幣值表示”的問(wèn)題,那么在golang中如何避免這一方面的問(wèn)題呢,下面就跟隨小編一起來(lái)學(xué)習(xí)一下吧
    2024-02-02
  • golang解析xml的方法

    golang解析xml的方法

    這篇文章主要介紹了golang解析xml的方法,結(jié)合實(shí)例形式分析了Go語(yǔ)言針對(duì)xml文件的讀取與解析的相關(guān)技巧,需要的朋友可以參考下
    2016-07-07
  • golang實(shí)現(xiàn)ftp實(shí)時(shí)傳輸文件的案例

    golang實(shí)現(xiàn)ftp實(shí)時(shí)傳輸文件的案例

    這篇文章主要介紹了golang實(shí)現(xiàn)ftp實(shí)時(shí)傳輸文件的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • 一文帶你掌握Golang中panic與recover的使用方法

    一文帶你掌握Golang中panic與recover的使用方法

    這篇文章主要介紹了Golang中panic與recover的作用和使用方法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的小伙伴可以參考一下
    2023-04-04
  • golang模擬TCP粘包和拆包

    golang模擬TCP粘包和拆包

    粘包是指在發(fā)送多個(gè)小的數(shù)據(jù)包時(shí),接收端會(huì)將這些數(shù)據(jù)包合并成一個(gè)數(shù)據(jù)包接收,拆包是指發(fā)送的數(shù)據(jù)包在傳輸過(guò)程中被分割成多個(gè)小包,下面我們來(lái)看看go如何模擬TCP粘包和拆包吧
    2024-12-12
  • Golang數(shù)組的傳遞詳解

    Golang數(shù)組的傳遞詳解

    今天小編就為大家分享一篇關(guān)于Golang數(shù)組的傳遞詳解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • Go語(yǔ)言對(duì)接微信支付與退款指南(示例詳解)

    Go語(yǔ)言對(duì)接微信支付與退款指南(示例詳解)

    在互聯(lián)網(wǎng)技術(shù)日益發(fā)展的背景下,Go語(yǔ)言憑借并發(fā)處理能力,在后端開(kāi)發(fā)中大放異彩,本文詳細(xì)介紹如何使用Go語(yǔ)言對(duì)接微信支付,完成支付和退款功能,包括準(zhǔn)備工作、初始化微信支付客戶端、實(shí)現(xiàn)支付功能,以及處理支付回調(diào)和退款等
    2024-10-10

最新評(píng)論