Golang如何实现简单的JSON API_Golang JSON API接口设计示例


答案:使用Golang标准库net/http和encoding/json可实现简易JSON API。定义User结构体并模拟数据存储,通过http.HandleFunc注册路由,分别处理GET /users获取用户列表、GET /users/{id}获取单个用户、POST /users创建用户等请求,设置正确响应头、状态码并进行JSON序列化与反序列化,即可完成基础CRUD功能。

golang如何实现简单的json api_golang json api接口设计示例

用Golang实现一个简单的JSON API并不复杂,核心是使用标准库中的net/http处理HTTP请求,配合encoding/json进行数据序列化。下面通过一个用户管理的接口示例,展示如何设计和实现一个基础的JSON API。

定义数据结构

假设我们要提供一个用户信息的增删查改(CRUD)接口,先定义一个User结构体:

type User struct {
    ID   int    `json:"id"`
    Name string `json:"name"`
    Age  int    `json:"age"`
}

结构体字段使用json:标签,确保在JSON输出时使用小写字段名。

初始化数据和路由

使用切片模拟存储,注册几个路由处理函数:

var users = []User{
    {ID: 1, Name: "Alice", Age: 25},
    {ID: 2, Name: "Bob", Age: 30},
}

func main() {
    http.HandleFunc("/users", getUsers)
    http.HandleFunc("/users/", getUser)
    log.Println("Server starting on :8080")
    log.Fatal(http.ListenAndServe(":8080", nil))
}

实现获取用户列表接口

getUsers 处理 GET /users 请求,返回所有用户的JSON数组:

func getUsers(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(users)
}

设置响应头为JSON类型,然后直接编码输出。

秒哒 秒哒

秒哒-不用代码就能实现任意想法

秒哒 535 查看详情 秒哒

实现获取单个用户接口

getUser 处理 GET /users/1 这类请求,提取ID并查找用户:

func getUser(w http.ResponseWriter, r *http.Request) {
    idStr := strings.TrimPrefix(r.URL.Path, "/users/")
    id, err := strconv.Atoi(idStr)
    if err != nil || id <= 0 {
        http.Error(w, "Invalid user ID", http.StatusBadRequest)
        return
    }

    for _, u := range users {
        if u.ID == id {
            w.Header().Set("Content-Type", "application/json")
            json.NewEncoder(w).Encode(u)
            return
        }
    }

    http.Error(w, &quot;User not found", http.StatusNotFound)
}
</font>

通过strings.TrimPrefix提取路径中的ID,转换为整数后遍历查找。找到则返回JSON,否则返回404错误。

添加新用户(POST示例)

支持创建用户,处理POST请求:

func createUser(w http.ResponseWriter, r *http.Request) {
    var newUser User
    if err := json.NewDecoder(r.Body).Decode(&newUser); err != nil {
        http.Error(w, "Invalid JSON", http.StatusBadRequest)
        return
    }

    // 简单生成ID
    if len(users) > 0 {
        newUser.ID = users[len(users)-1].ID + 1
    } else {
        newUser.ID = 1
    }

    users = append(users, newUser)
    w.Header().Set("Content-Type", "application/json")
    w.WriteHeader(http.StatusCreated)
    json.NewEncoder(w).Encode(newUser)
}

读取请求体中的JSON数据,反序列化到结构体,分配ID后加入列表,并返回201状态码。

基本上就这些。通过组合http.HandleFunc、结构体和json包,就能快速搭建出可用的JSON API。虽然没有用到第三方框架(如Gin),但标准库已足够应对简单场景。注意处理错误、设置正确的内容类型和状态码,API会更健壮。

以上就是Golang如何实现简单的JSON API_Golang JSON API接口设计示例的详细内容,更多请关注其它相关文章!


# json  # go  # golang  # 编码  # app  # js  # 几个  # 序列化  # 如何在  # 遍历  # 网站广告怎么推广赚钱多  # 单页面seo优化方案  # 苏州搜索关键词排名推广  # 农庄营销推广策划  # 襄阳企业营销型网站建设  # 珠海行业网站建设  # 橙子先生推广营销模式  # 如何强化网站建设能力  # 资源管理  # 用户列表  # 就能  # 如何实现  # 数据结构  # 加载  # 标准库  # json数组  # 状态码  # 路由  # ai  # 莱山区推广公司招聘网站  # 7天优化seo 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 大熊猫抓取竹子的“大拇指”其实是什么?蚂蚁庄园课堂今天答案最新11月30日  MySQL多重关联查询:利用别名高效获取同一表的多个关联字段  mysql离线安装后如何启动_mysql离线安装完成后启动服务的方法  使用CSS :has() 选择器实现父元素样式控制:从子元素反向应用样式  51漫画网实时入口 51漫画网页版官方免费漫画入口  漫蛙manwa官网浏览入口_漫蛙漫画网页版访问链接  Win10锁屏时间怎么设置 Win10调整自动锁屏时间方法  在VS Code中进行数据科学和机器学习开发  百度竞价WAP显示PC链接问题  性能与资源监视器快捷打开  HTML中多图片上传与预览:解决ID冲突的专业指南  PPT页面尺寸怎么修改 PPT自定义幻灯片大小与方向设置【教程】  红手指专业版app注册教程  芒果TV官网登录入口 芒果TV官方网站登录入口  J*aScript模拟悬停与点击:自动化网页动态元素交互指南  TikTok收藏夹无法删除视频如何解决 TikTok收藏管理优化方法  QQ网站入口直接登录 QQ官方正版登录页面  J*aScript二进制处理_ArrayBuffer与Blob  MongoDB聚合管道:高效统计列表中各项的文档数量  Python项目中的条件导入:解决跨模块依赖问题  嘀嗒顺风车如何开具电子发票  C++ switch case字符串_C++如何实现字符串switch匹配  附近酒吧怎么找?  小红书如何引流到私信?引流到私信有用吗?  如何配置VS Code作为您Git操作的默认编辑器  智慧团建活动报名入口 智慧团建活动报名入口手机端官网​  《随手记》备份数据方法  《猎聘》筛选猎头岗位方法  word页码灰色不能用如何解决  VS Code如何设置默认配置  折叠屏手机充不进电是什么问题? 特殊结构带来的维修难点  解决CSS布局中意外顶部空白问题的教程  如何快速去除厨房重油污? 2025年最好用的厨房清洁剂推荐  解决CSS background 属性中 cover 关键字的常见误用  C#解析来自网络的XML流数据 实时错误处理与重试机制  《虎扑》取消评分记录方法  J*a中逻辑运算符如何使用_逻辑与或非的基础用法讲解  Windows Audio服务启动失败怎么办_电脑没声音的终极服务修复法【修复】  电脑“无法访问指定设备、路径或文件”怎么办?五种权限设置方法  实现可重用自定义Python Range类  Bootstrap 5导航栏折叠功能失效:数据属性迁移指南  word文档中的分隔符有哪些不同类型和用途_Word分隔符类型与用途方法  厨房地面防滑垫的油污怎么洗? 机洗和手洗防滑垫的注意事项  《跳跳舞蹈》循环播放方法  poki官网最新入口 poki小游戏大全入口  电脑视频号|直播|如何分享屏幕  byrutor直接访问入口 byrutor官方游戏库  发博客与长微博技巧  sublime怎么在文件中显示代码结构大纲_sublime符号列表功能  苹果手机缓存怎么清除_苹果手机缓存如何清除iphone各版本操作步骤 

 2025-12-15

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.