IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> golang快速入门—echo构建web应用 -> 正文阅读

[Python知识库]golang快速入门—echo构建web应用

概述

  • echo web框架是go语言开发的一种高性能,可扩展,轻量级的web框架。echo框架真的非常简单,几行代码就可以启动一个高性能的http服务端。
  • 类似python的django框架
  • 可设置cookie,session,文件上传,获取用户ip等

依赖安装

go get github.com/labstack/echo/v4 # web框架
go get -u github.com/swaggo/echo-swagger # echo中使用swagger文档
go get github.com/swaggo/swag/cmd/swag # swag文档生成工具

业务实操

初始化基础框架

package test_echo

import (
	"fmt"
	"github.com/labstack/echo/v4"
	"github.com/labstack/echo/v4/middleware"
)

var echoWeb *echo.Echo
var visitTotal int // 统计访问量
// 自定义中间件,下面是统计访问量
func CountMiddleware(next echo.HandlerFunc) echo.HandlerFunc {
	return func(context echo.Context) error {
		visitTotal++
		context.Response().Header().Add("visit-total", fmt.Sprintf("%d", visitTotal))
		return next(context)
	}
}

// 初始化业务需要基础操作,下面是初始化echo,以及中间件
func init() {
	echoWeb = echo.New()
	echoWeb.Debug = true
	echoWeb.Use(middleware.Recover()) // 主要用于拦截panic错误并且在控制台打印错误日志,避免echo程序直接崩溃
	echoWeb.Use(middleware.Logger())  // Logger中间件主要用于打印http请求日志
	echoWeb.Use(CountMiddleware)
}

// 全局使用echo对象
func GetEcho() *echo.Echo {
	return echoWeb
}

定义业务板块

package test_echo

import (
	"github.com/labstack/echo/v4"
	"net/http"
)

// -----------------------------------API HelloWorldHandler
type HelloWorldHandler struct{}

// @Summary Test
// @Description 输出hello world
// @Tags Test
// @Accept json
// @Produce json
// @Success 200 {string} string "Success"
// @Failure 400 {string} string "Failed"
// @Failure 404 {string} string "Not Found"
// @Failure 500 {string} string "Internal Error"
// @Router /hello-world [get]
func (receiver HelloWorldHandler) main(c echo.Context) error {
	return c.String(http.StatusOK, "hello world")
}
func (receiver HelloWorldHandler) router() {
	GetEcho().Add("GET", "/hello-world", receiver.main)
}

// -----------------------------------API PrintName
type PrintName struct{}
type PrintNameResponse struct {
	Name string `json:"name"`
}

// @Summary Test
// @Description 根据参数输出name
// @Tags Test
// @Accept json
// @Produce json
// @Param name query string true "名称"
// @Success 200 {object} PrintNameResponse PrintNameResponse{}
// @Failure 400 {string} string "Failed"
// @Failure 404 {string} string "Not Found"
// @Failure 500 {string} string "Internal Error"
// @Router /print-name [get]
func (receiver PrintName) main(c echo.Context) error {
	name := c.QueryParam("name") // 获取query参数
	return c.JSON(http.StatusOK, PrintNameResponse{Name: name})
}
func (receiver PrintName) router() {
	GetEcho().Add("GET", "/print-name", receiver.main)
}

将业务与框架串联

package test_echo

import echoSwagger "github.com/swaggo/echo-swagger"
import _ "casbin-go/docs"

// 设置router
func SetRouter() {
	HelloWorldHandler{}.router()
	PrintName{}.router()
	GetEcho().GET("/docs/*", echoSwagger.WrapHandler) // 引入swagger文档接口
}

// 启动router
func StartRouter() {
	SetRouter()
	GetEcho().Start(":8080")
}

执行

package main

import (
	"casbin-go/test-echo"
	"fmt"
)

// @title Swagger Example API
// @version 1.0
// @description GO测试文档.
// @termsOfService http://swagger.io/terms/
// @contact.name API Support
// @contact.url http://www.swagger.io/support
// @contact.email support@swagger.io
// @license.name Apache 2.0
// @license.url http://www.apache.org/licenses/LICENSE-2.0.html
func echoTest() {
	test_echo.StartRouter()
}

func main() {
	echoTest()

}

结论

  • 注意启动之前先执行
swag init # 生成api文档
  • 通过如下地址查看文档并调用接口 http://127.0.0.1:8080/docs/index.html#/
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-06 15:12:29  更:2021-12-06 15:13:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:31:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码