go doudou开发单体RESTful服务快速上手教程

yizhihongxing

Go doudou开发单体RESTful服务快速上手教程

什么是Go doudou

Go doudou是一个基于Go语言的Web框架,它依赖于Swagger和Gin,可以快速开发RESTful API。

安装Go doudou

首先需要在本地安装Go语言环境,并将GOPATH配置正确。然后,可以通过以下命令安装Go doudou:

go get github.com/unionj-cloud/go-doudou

创建一个单体RESTful服务

  1. 创建一个空的Go模块项目:
mkdir go-doudou-demo
go mod init go-doudou-demo
  1. 安装依赖:
go get github.com/gin-gonic/gin
go get github.com/swaggo/files
go get github.com/swaggo/gin-swagger
  1. 创建main.go文件并编写代码:
package main

import (
    "fmt"
    "github.com/gin-gonic/gin"
    _ "github.com/swaggo/files"
    _ "github.com/swaggo/gin-swagger"
    "github.com/unionj-cloud/go-doudou/svc"
    "go-doudou-demo/controller"
)

func main() {
    svc.Run(controller.NewUserController(), func(r *gin.Engine) {
        fmt.Println("Welcome to My User API Engine")
    })
}

上述代码中,我们导入了Gin和Swagger的依赖,同时导入了go-doudou的svc和我们自己的controller模块。在main函数中,我们创建了一个新的UserController实例,并使用svc.Run()函数将路由和中间件打包到Gin引擎中运行。

  1. 创建controller文件并编写代码:
package controller

import (
    "github.com/gin-gonic/gin"
    "github.com/swaggo/gin-swagger"
    "github.com/swaggo/gin-swagger/swaggerFiles"
    "github.com/unionj-cloud/go-doudou/ddl"
    "github.com/unionj-cloud/go-doudou/pathutils"
    "go-doudou-demo/model"
)

type userControllerImpl struct {
    ddl.BaseController
}

func NewUserController() *userControllerImpl {
    return &userControllerImpl{}
}

func (u *userControllerImpl) Query(params *model.UserModel) (ret []model.UserModel, msg string, code int) {
    // 查询用户
}

func (u *userControllerImpl) Detail(id int) (ret model.UserModel, msg string, code int) {
    // 查询id指定的用户
}

func (u *userControllerImpl) Save(params *model.UserModel) (ret model.UserModel, msg string, code int) {
    // 新增或修改用户
}

func (u *userControllerImpl) Delete(id int) (msg string, code int) {
    // 删除用户
}

func (u *userControllerImpl) Swagger(c *gin.Context) {
    // 集成Swagger API文档
    dir, _ := pathutils.Abs("./")
    url := ginSwagger.URL(fmt.Sprintf("http://localhost:%d/swagger/doc.json", 8080))
    c.Redirect(302, url+"?url="+dir+"/swagger/doc.json")
}

// 自动生成Swagger并渲染到HTML文件,使用前先安装swag工具
// `go get -u github.com/swaggo/swag/cmd/swag`
// 然后进入controller目录执行命令:swag init
// 就会在controller目录生成docs子目录,里面存放着Swagger API文档相关的文件
// docs目录会被纳入到gitignore,不会污染代码版本库
//
// 访问http://localhost:8080/swagger/index.html看到自动生成的Swagger API文档
// 注意:需要先执行本示例,让RESTful API服务启动,才能访问Swagger API文档 
// 
// @title go-doudou User API
// @version v1
// @description This is an API server powering go-doudou User API
// @host localhost:8080
// @BasePath /api/v1
func (u *userControllerImpl) Docs() gin.HandlerFunc {
    return swaggerFiles.Handler
}

上述代码中,我们定义了一个userControllerImpl结构体,它继承了go-doudou的ddl.BaseController结构体,从而获得了一些基础的RESTful API方法。在NewUserController()函数中,我们实例化了一个userControllerImpl对象并返回。我们还分别实现了Query()、Detail()、Save()、Delete()和Swagger()方法,它们分别对应查询用户、查询id指定的用户、新增或修改用户、删除用户、和Swagger API文档。

  1. 创建model文件并编写代码:
package model

type UserModel struct {
    ID       int    `json:"id,string,omitempty"`
    Username string `json:"username,omitempty"`
}

上述代码中,我们定义了一个UserModel结构体,它包含了用户ID和用户名两个字段。

  1. 启动服务:
go run main.go

至此,一个简单的单体RESTful服务就完成了。我们可以在本地运行该服务,使用Postman等RESTful客户端工具访问http://localhost:8080/api/v1/users等API接口。

示例说明

示例1:查询用户

func main() {
    //...
    router.GET("/api/v1/users", func(c *gin.Context) {
        username := c.Query("username")
        params := &model.UserModel{Username: username}
        ret, msg, code := controller.User().Query(params)
        c.JSON(http.StatusOK, gin.H{
            "data": ret,
            "msg":  msg,
            "code": code,
        })
    })
    //...
}

上述代码中,我们在main函数中定义了一个HTTP GET方法,用于查询用户信息。该方法接受username作为请求参数,然后根据参数构造UserModel对象并调用controller.User().Query()方法进行查询。最后返回查询结果。

示例2:自动生成Swagger文档

// 自动生成Swagger并渲染到HTML文件
router.GET("/", controller.User().Docs())

上述代码中,我们在路由中添加了一个GET方法,用于生成Swagger API文档。该方法调用了userControllerImpl结构体中的Docs()方法,并返回了Swagger API文档的HTML文件。我们只需访问http://localhost:8080/就能看到自动生成的Swagger API文档。需要注意的是,要先启动RESTful服务才能访问Swagger API文档。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:go doudou开发单体RESTful服务快速上手教程 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • windows下TortoiseGit安装与配置详细教程

    下面是关于“windows下TortoiseGit安装与配置详细教程”的完整攻略: 安装 TortoiseGit 下载 TortoiseGit 前往 TortoiseGit 官网 https://tortoisegit.org/download/ 下载安装包,一般来说,选择 “Full installer” 即可。 安装 TortoiseGit 双击安装包,…

    GitHub 2023年5月16日
    00
  • 在vscode中使用Git的教程

    使用Git管理代码是现代软件开发的标配之一。在Visual Studio Code (VS Code)中使用Git能够方便地进行代码管理、版本控制、协同开发等操作。接下来,我们将为你详细介绍如何在VS Code中使用Git。 一、安装Git 在使用Git前,首先需要在本地安装Git。你可以前往Git官网(https://git-scm.com/)下载对应系统…

    GitHub 2023年5月16日
    00
  • golang sql连接池的实现方法详解

    首先我们要明确一下什么是SQL连接池。SQL连接池是为了优化数据库连接而产生的一种技术,它通过对数据库连接的管理和维护,提高数据库访问的效率和性能,减少数据库压力。 下面,我将详细讲解golang实现SQL连接池的方法: 1.引入必要的包 我们需要使用golang的database/sql包,这是golang标准库中封装的关系型数据库连接接口,同时我们还需要…

    GitHub 2023年5月16日
    00
  • IDEA配置码云Gitee的使用详解

    IDEA配置码云Gitee的使用详解 前言 代码托管是当前项目开发的必备环节之一,代码版本管理工具Git因为其分布式、快速的特点,一直是大家比较青睐的选项。而在国内,Gitee是相对比较流行和稳定的代码托管平台。本文将介绍如何在IntelliJ IDEA中配置Gitee。 步骤 第一步:创建新仓库 首先在Gitee上创建新仓库,点击个人中心,选择代码仓库,然…

    GitHub 2023年5月16日
    00
  • Github创建个人访问Tokens令牌

    创建个人访问 Tokens(Personal Access Tokens)是在Github上进行代码管理及参与开源项目的必要操作之一。在本篇文档中,我们将详细介绍如何在Github上创建个人访问Tokens。 步骤一:进入账户设置页面 首先,我们需要进入Github的账户设置页面。在该页面中,可以找到并创建个人访问Tokens。 示例一:在Github主页点…

    GitHub 2023年5月16日
    00
  • Python利用PySimpleGUI实现自制桌面翻译神器

    下面我会详细讲解“Python利用PySimpleGUI实现自制桌面翻译神器”的完整攻略,其中会包含两条示例说明。 简介 在这个项目中,我们将使用Python编写一个简单的桌面翻译软件。用户可以输入需要翻译的文本,选择翻译语言和译文语言,然后单击“翻译”按钮,软件将使用百度翻译API将文本翻译成所选语言。我们将利用PySimpleGUI库构建用户图形界面。 …

    GitHub 2023年5月16日
    00
  • js按条件生成随机json:randomjson实现方法

    下面我来详细讲解“js按条件生成随机json:randomjson实现方法”的完整攻略,包含两条示例说明。 1. 什么是randomjson? randomjson是一种通过 JavaScript 来按照给定条件生成随机 JSON 对象的方法。 2. 安装和使用方法 randomjson可以通过在目标项目中使用 npm 来安装,也可以通过从 GitHub 上…

    GitHub 2023年5月16日
    00
  • golang redigo发布订阅使用的方法

    下面是详细讲解“golang redigo发布订阅使用的方法”的完整攻略: 概述 Redis是一个基于内存的高性能NoSQL数据库,它支持多种结构化数据类型,例如string、hash、set、zset、list等,同时还支持发布订阅模式(publish/subscribe)用来实现消息的广播与订阅。 Redigo是当下比较流行的一个Redis的Golang…

    GitHub 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部