Golang的API项目快速开始

这篇具有很好参考价值的文章主要介绍了Golang的API项目快速开始。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

开启一个简单的API服务。

golang的教程网上一大堆,官网也有非常详细的教程,这里不在赘述这些基础语法教程,我们意在快速进入项目开发阶段。

golang好用语法教程传送门: m.runoob.com/go/

编写第一个API

前提:按照上一篇文档初始化项目

1. 下载gin框架,一个非常好用的写API的框架,使用也很广泛

# 在项目文件下执行go命令下载gin依赖
go mod get github.com/gin-gonic/gin

2. 创建API文件夹:apis

3. 在apis创建第一个API文档:hello.go

4. 实现一个入参为name,返回为:hello name的api

package apis

import (
	"fmt"
	"net/http"

	"github.com/gin-gonic/gin"
	"github.com/gin-gonic/gin/binding"
)

// API入参参数
type HttpRequest struct {
	Name string `json:"name"`
}

// API响应参数
type HttpRespone struct {
	Status  int    `json:"status"`
	Message string `json:"message"`
	Data    string `json:"data"`
}

/*
实现一个入参为name,响应为:hello name的api
这个例子中,异常信息通过status和message返回,api响应状态正常,如果需要响应400等异常状态,可以更换c.JSON(http.StatusOK, res)中的StatusOK
*/
func Hello(c *gin.Context) {
	// 声明req
	var req HttpRequest
	// 声明res并初始化
	var res = HttpRespone{}

	// 获取api请求参数
	err := c.ShouldBindBodyWith(&req, binding.JSON)
	// 出现错误,则响应错误信息
	if err != nil {
		res.Status = 10
		res.Message = "读取请求参数错误"
		c.JSON(http.StatusOK, res)
		return
	}
	// 判断是否入参name
	if req.Name == "" {
		res.Status = 20
		res.Message = "参数name为空"
		c.JSON(http.StatusOK, res)
		return
	}
	// 正常响应 hello name
	res.Status = 0
	res.Message = "成功"
	res.Data = fmt.Sprintf("hello %v", req.Name)
	c.JSON(http.StatusOK, res)
}

5. 在apis文件夹中创建apis.go,编写api路由注册和服务启动方法

package apis

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

func StartHttp() {
	// 设置为发布模式(初始化路由之前设置)
	gin.SetMode(gin.ReleaseMode)
	// gin 默认中间件
	r := gin.Default()

	// 访问一个错误路由时,返回404
	r.NoRoute(func(c *gin.Context) {
		c.JSON(http.StatusNotFound, gin.H{
			"status":  404,
			"message": "404, page not exists!",
		})
	})

	// 注册hello路由
	r.POST("/hello", Hello)

	// 启动API服务
	if err := r.Run(":8080"); err != nil {
		panic(err)
	}
}

6. 入口文件main.go引用apis模块

package main

import "prj_aiee/apis"

func main() {
	apis.StartHttp()
}

完整的项目文件构成如图:

Golang的API项目快速开始,后端(golang),golang,开发语言,后端

7.  启动服务

# 项目文件夹下执行go命令
go run main.go

8. 调用api

# 执行curl命令调用API
curl -X POST "http://localhost:8080/hello" -H "content-type: application/json" -d "{\"name\": \"aiee\"}"

9. 响应如下: {"status":0,"message":"成功","data":"hello aiee"}

Golang的API项目快速开始,后端(golang),golang,开发语言,后端

项目源码:GitHub - liyonge-cm/go_prj_aiee: go api 服务 demo文章来源地址https://www.toymoban.com/news/detail-813030.html

到了这里,关于Golang的API项目快速开始的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 适用于快速开发应用的Golang二次框架

    适用于快速开发应用的Golang二次框架。 GinSkeleton 项目简介 1.这是一个基于go语言gin框架的web项目骨架,专注于前后端分离的业务场景,其目的主要在于将web项目主线逻辑梳理清晰,最基础的东西封装完善,开发者更多关注属于自己的的业务即可。 2.本项目骨架封装了以tb_users表

    2024年02月07日
    浏览(34)
  • 【Golang】三分钟让你快速了解Go语言&为什么我们需要Go语言?

    博主简介: 努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:数据结构、Go,Java等相关知识。 博主主页: @是瑶瑶子啦 所属专栏: Go语言核心编程 近期目标: 写好专栏的每一篇文章 Go 语言从 2009 年 9 月 21 日开始作为谷歌公司 20% 兼职项目,即相关

    2023年04月21日
    浏览(48)
  • Golang Devops项目开发(1)

    1.1.1 开发环境搭建 参考文档:《Windows Go语言环境搭建》 1.2.1 Go语言特性-垃圾回收 a. 内存自动回收,再也不需要开发人员管理内存 b. 开发人员专注业务实现,降低了心智负担 c. 只需要new分配内存,不需要释放 d. gc 垃圾回收 1.2.2 Go语言特性-天然并发 a. 从语言层面支持并发,

    2024年02月15日
    浏览(49)
  • 【Golang】一篇文章带你快速了解Go语言&为什么你要学习Go语言

    目录 1. 为什么互联网世界需要Go语言 1.1 硬件限制:摩尔定律已然失效  1.2 Go语言为并发而生 1.3 Go性能强悍 1.4 Go语言简单易学 1.4.1 语法简洁 1.4.2 代码风格统一 1.4.3开发效率高  2.Go语言的诞生与发展 2.1什么是Go语言   2.2 Go语言的诞生 2.3 Go Gopher——Go语言的吉祥物 3. 为什么

    2024年02月04日
    浏览(48)
  • “从零开始学习Spring Boot:快速搭建Java后端开发环境“

    标题:从零开始学习Spring Boot:快速搭建Java后端开发环境 摘要:本文将介绍如何从零开始学习Spring Boot,并详细讲解如何快速搭建Java后端开发环境。通过本文的指导,您将能够快速搭建一个基于Spring Boot的Java后端开发环境并开始编写代码。 正文: 一、准备工作 在开始之前,

    2024年02月15日
    浏览(42)
  • 【Golang】VsCode下开发Go语言的环境配置(超详细图文详解)

    📓推荐网站(不断完善中):个人博客 📌个人主页:个人主页 👉相关专栏:CSDN专栏、个人专栏 🏝立志赚钱,干活想躺,瞎分享的摸鱼工程师一枚 ​ 话说在前,Go语言的编码方式是 UTF-8 ,理论上你直接使用文本进行编辑也是可以的,当然为了提升我们的开发效率我们还是需

    2024年02月07日
    浏览(70)
  • 【后端学习笔记·Golang】邮箱邮件验证

    流程: 接收用户请求后生成随机验证码,并将验证码存入Redis中,并设置TTL 通过gomail发送验证码给用户邮箱 接收用户输入的验证码,与Redis中存放的验证码进行比对 ​ 随机种子通过 time.Now().UnixNano() 进行设置,以确保对于同一个用户每次请求都使用不同的种子。然后,定义

    2024年04月26日
    浏览(38)
  • golang iris框架 + linux后端运行

    打包应用 开启服务 关闭后台 杀死进程 通过 ps -ef|grep main 找到应用出现 找到应用的( PID(一般是第一个数字) )

    2024年02月07日
    浏览(49)
  • 使用代码生成工具快速开发应用-结合后端Web API提供接口和前端页面快速生成,实现通用的业务编码规则管理

    在前面随笔《在Winform应用中增加通用的业务编码规则生成》,我介绍了基于Winform和WPF的一个通用的业务编码规则的管理功能,本篇随笔介绍基于后端Web API接口,实现快速的Vue3+ElementPlus前端界面的开发整合,同样是基于代码生成工具实现快速的前端代码的生成处理。 在前面

    2024年02月04日
    浏览(36)
  • Golang快速入门到实践学习笔记

    Go程序设计的一些规则 Go之所以会那么简洁,是因为它有一些默认的行为: 大写字母开头的变量是可导出的,也就是其它包可以读取 的,是公用变量;小写字母开头的就是不可导出的,是私有变量。 大写字母开头的函数也是一样,相当于class 中的带public的公有函数;

    2024年02月20日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包