百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

使用Beego + Swagger构建API(怎么知道swagger接口地址)

ccwgpt 2024-10-10 04:50 37 浏览 0 评论

(原文作者:Arnesh Agrawal)

为什么是Beego?

Beego是一个RESTful HTTP框架,用于在Golang中开发Web应用程序和API,并遵循Model-View-Controller(MVC)体系结构。它支持用Swagger来自动生成文档,这使我们的工作更加轻松。

在本文中,我将讨论Beego框架的基础知识以及Swagger如何在文档中为我们提供帮助。

先决条件

  • 进入设置(遵循此https://www.digitalocean.com/community/tutorials/how-to-install-go-on-ubuntu-18-04)
  • Beego安装(遵循此https://beego.me/quickstart)

让我们开始吧

假设您已经成功设置了Go and Beego,就该开始了!
首先,我希望您在终端中运行一个简单的命令。

bee

这应该输出类似:

如果您的输出与此匹配,则表明您已成功设置了此项目所需的所有内容。如果不是,请继续解决该问题。

让我们为本教程创建一个新的API,将其命名为test_api

bee api test_api

该命令将创建一个目录“ test_api”,其中包含以下文件夹和文件:

-conf
-controllers
-main.go
-models
-routers
-tests

简而言之,路由器是指定端点的地方(https://stackoverflow.com/questions/30580562/what-is-the-difference-between-resource-and-endpoint),控制器是API的大脑,模型是用于控制器所需的数据处理的地方,而conf是用于存储凭据和有关API的其他信息的配置文件。

默认情况下,我们已经在routers目录的router.go文件中创建了“用户”和“对象”端点。

func init() {
	ns := beego.NewNamespace("/v1",
		beego.NSNamespace("/object",
			beego.NSInclude(
				&controllers.ObjectController{},
			),
		),
		beego.NSNamespace("/user",
			beego.NSInclude(
				&controllers.UserController{},
			),
		),
                beego.NSNamespace("/test",
			beego.NSInclude(
				&controllers.TestController{},
			),
		),
	)
	beego.AddNamespace(ns)
}

(https://gist.github.com/Arnesh07/e5441e7a2d1b223aa9179f7946c38ae6/raw/badc66e7c4efd47dc1b4fd6f8df5ea136c51b049/router.go)

此代码段指定端点v1/object由处理ObjectController。我已经test按照本教程的类似规范创建了一个端点。现在,我们可以在这里忽略所有其他关键字,而只关注端点和处理端点的控制器。
每当对v1/test端点执行调用时,都会执行内部的逻辑TestController

现在,我们需要制作两个新文件:控制器中的test.go和模型中的test.go。
控制器中的test.go基本上是TestController,模型的文件是此特定控制器的模型。

package controllers

import (
	"test_api/models"
	"github.com/astaxie/beego"

)

type TestController struct {
	beego.Controller
}

// @Title TestEndpoint
// @Description Tests the API
// @Success 200 {object} models.Test
// @Failure 403 body is empty
// @router /hello [get]
func (t *TestController) Test() {
	Response := models.TestFunction()
	t.Data["json"] = Response
	t.ServeJSON()  
}

(https://gist.github.com/Arnesh07/e5441e7a2d1b223aa9179f7946c38ae6/raw/badc66e7c4efd47dc1b4fd6f8df5ea136c51b049/router.go)

每个控制器的布局都是相同的,因此我们实际上可以在此处使用用户控制器的代码,并根据需要对其进行修改。关于函数Test(),只要执行此函数,Response变量就会TestFunction在模型中调用该函数并存储接收到的数据。然后,控制器将数据编码为JSON形式并返回。

这很简单
但是在这里更重要的是要理解之前的评论TestFunction
这些注释实际上在API和文档中起作用。
这些评论@Title@Description是自描述它们的功能和使用是对文件的。
@Success并分别@Failure指示对端点执行成功和失败的响应。这些注释后的整数表示响应代码,这些整数后的值表示返回类型。这些注释也用于文档。
最后一条评论@Router暗示了端点将是什么及其功能。/hello@Router是在router.go中指定的初始端点之外的功能,即在Test需要端点时执行该功能v1/test/hello[get]表示HTTP请求是GET请求。在此处
了解有关HTTP请求的更多信息。可以得到有关在Beego框架这样的评论的详细解释在这里。

进入模型的代码:

package models

import (
	
)

type Test struct {
	Response string 
}

func TestFunction() Test {
	 var test_var Test 
	 test_var.Response = "Hello World"
	 return test_var
}

(https://gist.github.com/Arnesh07/920b42ad5cb18f24355598e801d9344f/raw/6893700f4b04f57c53df196c21fd4539d555bfa8/test.go)

功能TestFunction,具有返回类型结构Test,是由控制器调用。它为该结构创建一个新变量,分配Response为“ Hello World”并返回该结构。
所有数据处理和修改都应在此处执行。

恭喜你!我们已经完成了本教程的API编码。现在是时候测试我们的API并生成一些文档了。

bee run

在目录中使用此命令test_api来运行我们的本地服务器以测试我们的端点。现在,打开浏览器并输入:

http://localhost:8080/v1/test/hello

输出应为:

{
  "Response": "Hello World"
}

现在开始自动生成文档,结束服务器的会话并使用以下命令:

bee run -gendoc=true -downdoc=true

现在,转到浏览器并输入:

http://localhost:8080/swagger/

这是我们API的自动生成的文档。我们可以查看端点的文档。

瞧!本教程到此结束。我希望您从中学到了一些有价值的东西。我在下面发布了一些重要链接,以帮助您更好地开发Beego。

链接

  • https://tour.golang.org/welcome/1(要学习Golang的基础知识)
  • https://beego.me/docs/intro/(Beego文档)
  • https://golang.org/doc/(Golang文档)
  • https://solidgeargroup.com/best-practices-rest-api/(开发API的良好做法)

PS-除非另有说明,否则我要求拥有本博客文章中使用的所有图片和代码段的所有权利。

谢谢你!

原文地址:

https://medium.com/mobile-development-group/how-beego-swagger-can-make-coding-an-api-easier-227b56055cbc

相关推荐

谷歌正在为Play商店进行Material Design改造

谷歌最近一直忙于在其应用程序中完成MaterialDesign风格的改造,而Play商店似乎是接下来的一个。9to5Google网站报道,有用户在Play商店的最新版本中发现了新界面,暗示该应用和网...

企业网站免费搭建,定制化建站CMS系统

科腾软件企业网站CMS管理系统已完成开发工作,首次开源(全部源码)发布。开发工具:VisualStudioEnterprise2022数据库:SQLite(零配置,跨平台,嵌入式)开发...

您需要的 11 个免费 Chrome 扩展程序

来源:SEO_SEM营销顾问大师Chrome扩展程序是SEO的无名英雄,他们在幕后默默工作,使您的策略脱颖而出并提高您的努力效率。从竞争对手研究到审核您的网站,速度比您说“元描述”还快,这些小工具发...

户外便携设备抗干扰困境如何破局?CMS-160925-078S-67给出答案

  在户外复杂的电磁环境中,便携式设备中的扬声器需具备出色抗干扰能力,CUID的CMS-160925-078S-67在这方面表现突出。  从其结构设计来看,矩形框架虽主要为适配紧凑空...

一个基于NetCore开发的前后端分离CMS系统

今天给大家推荐一个开源的前后端分离架构的CMS建站系统。项目简介这是一个基于.Net3构建的简单、跨平台、模块化建站系统。系统业务简单、代码清晰、层级分明、全新架构便于二次扩展开发。支持多种数据库,...

本地Docker部署ZFile网盘打造个人云存储

前言本文主要介绍如何在LinuxUbuntu系统使用Docker本地部署ZFile文件管理系统,并结合cpolar内网穿透工具实现远程访问本地服务器上的ZFile传输与备份文件,轻松搭建个人网盘,无...

pcfcms企业建站系统 免费+开源的企业内容管理系统

项目介绍pcfcms是基于TP6.0框架为核心开发的免费+开源的企业内容管理系统,专注企业建站用户需求提供海量各行业模板,降低中小企业网站建设、网络营销成本,致力于打造用户舒适的建站体验。演示站...

【推荐】一个高颜值且功能强大的 Vue3 后台管理系统框架

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍SnowAdmin是一款基于Vue3、TypeScript、Vite5、Pinia、Arco-Desi...

java开源cms管理系统框架PublicCMS后台管理系统

一款使用Java语言开发的CMS,提供文章发布,图片展示,文件下载,用户权限、站点模块,内容管理、分类等功能。可免费用于商业用途maven工程数据库脚本在工程中database文件夹下代码结构:效果...

一定要大量读书:当我问Deepseek,它给出的高效阅读方法厉害了!

一年一度的世界读书日,总该写点什么。于是,我去问Deepseek给我推荐人生破局必读的10本书,结果它给了我回复,竟然10本推荐的书籍里,我都曾经浏览过,同时还给出破局关键。而说浏览过,不是读过,是因...

《搜神札记》:不应磨灭的惊奇(小说《搜神记》)

□黄勃志怪传说的书写一直是文人墨客的后花园,晚近尤盛,从张岱到袁枚到纪昀,收集那些或阴森或吊诡的行状故事,遂成一类,到民国年间,周作人挟此遗传,捋袖子拿希腊神话动刀,乃兄鲁迅不甘其后,《故事新编》虎...

《如何构建金字塔》之第三章总结(构建金字塔结构的方法有)

“没有什么比一套好理论更有用了。”——库尔特.勒温这篇读后感依然引用了这句库尔特.勒温名言,这句话也是我读芭芭拉.明托这本书的初衷。今天就“如何构建金字塔”,我来谈谈我的读后心得。我热爱写作,但是写...

《助人技术》第一章助人引论内容框架

第一章内容基本呈现如何成为助人者(心理咨询师)以及一些相关基础知识,对于进入这个行业有兴趣以及希望通过心理咨询寻求帮助但存有疑虑的当事人,都值得一读。心理咨询的三个阶段(不是说严格的三个阶段,而是广义...

AI助手重构读后感写作流程:从提纲到完整性思考的转换

大家好!你有没有遇到过读完一本书,想要写读后感,却不知道从何下手的情况呢?今天我们要来探讨一下如何利用稿见AI助手来重构读后感写作流程,从提纲到完整性思考的转换。让我们一起来看看这个全新而又实用的方法...

图解用思维导图做读书笔记技巧(图解用思维导图做读书笔记技巧视频)

做阅读笔记非常有利于读后进行有效的深入思考,而思维导图这一强大的工具其最大的特点就是架构清晰,在阅读过程中对文章的分析、总结、分类起着很大的辅助作用。思维导图读书笔记步骤:1、阅读大纲。首先要快速浏览...

取消回复欢迎 发表评论: