Go Fiber搭建一个HTTP服务器

Fiber 是一个 Express 启发 web 框架基于 fasthttp ,最快 Go 的 http 引擎。设计为简易,及快速的方式开发,同时考虑零内存分配和性能。这里默认你已经搭建好了本地Go环境。
一、安装

go install github.com/gofiber/fiber/v2@latest

二、创建本地工程
创建本地工程后,使用 go mod init 初始化当前文件夹为一个 Go Module,并指定其导入路径。

go mod init 工程名

三、编写Go代码
在工程目录下创建一个go文件

  1. 导入 Fiber 框架的依赖 github.com/gofiber/fiber/v2
  2. 使用 fiber.New() 初始化一个 Fiber App
  3. 使用 app.Static(“/”, “”) 设置静态文件路由,此处文件目录为空,返回 404
  4. 使用 app.Get() 设置 / 路径的 GET 路由,返回 “Hello World!”
  5. 使用 app.Listen(“:3000”) 启动服务器,监听 3000 端口
  6. 运行该程序,访问 http://localhost:3000 可以看到 “Hello World!” 的响应

app.Static可以设置一些HTML页面的路径,设置后可以通过打开http://localhost:3000访问该路径下的所有静态资源

package main

import "github.com/gofiber/fiber/v2"

func main() {
	app := fiber.New()

	app.Static("/", "")
	
	app.Get("/", func(c *fiber.Ctx) error {
		return c.SendString("Hello World!")
	})

	app.Listen(":3000")
}

四、 打开http://127.0.0.1:3000即可

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用Golang Fiber框架编写的微信支付函数库的示例代码: ```go package wechatpay import ( "bytes" "crypto/tls" "encoding/xml" "fmt" "io/ioutil" "net/http" "sort" "strings" "time" ) type WechatPay struct { AppID string // 微信公众号或开放平台APP的唯一标识 MchID string // 商户号 Key string // 商户支付密钥 NotifyURL string // 支付结果通知地址 } type UnifiedOrderRequest struct { XMLName xml.Name `xml:"xml"` AppID string `xml:"appid"` MchID string `xml:"mch_id"` NonceStr string `xml:"nonce_str"` Body string `xml:"body"` OutTradeNo string `xml:"out_trade_no"` TotalFee int `xml:"total_fee"` SpbillCreateIP string `xml:"spbill_create_ip"` NotifyURL string `xml:"notify_url"` TradeType string `xml:"trade_type"` OpenID string `xml:"openid"` Sign string `xml:"sign"` } type UnifiedOrderResponse struct { XMLName xml.Name `xml:"xml"` ReturnCode string `xml:"return_code"` ReturnMsg string `xml:"return_msg"` AppID string `xml:"appid"` MchID string `xml:"mch_id"` NonceStr string `xml:"nonce_str"` Sign string `xml:"sign"` ResultCode string `xml:"result_code"` PrepayID string `xml:"prepay_id"` TradeType string `xml:"trade_type"` } func (wp *WechatPay) UnifiedOrder(body, outTradeNo, spbillCreateIP, tradeType, openID string, totalFee int) (*UnifiedOrderResponse, error) { nonceStr := fmt.Sprintf("%d", time.Now().UnixNano()) req := &UnifiedOrderRequest{ AppID: wp.AppID, MchID: wp.MchID, NonceStr: nonceStr, Body: body, OutTradeNo: outTradeNo, TotalFee: totalFee, SpbillCreateIP: spbillCreateIP, NotifyURL: wp.NotifyURL, TradeType: tradeType, OpenID: openID, } req.Sign = wp.sign(req) buf := bytes.NewBuffer(nil) xml.NewEncoder(buf).Encode(req) client := &http.Client{ Transport: &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, }, } resp, err := client.Post("https://api.mch.weixin.qq.com/pay/unifiedorder", "application/xml;charset=utf-8", buf) if err != nil { return nil, err } defer resp.Body.Close() respBody, err := ioutil.ReadAll(resp.Body) if err != nil { return nil, err } var unifiedOrderResp UnifiedOrderResponse err = xml.Unmarshal(respBody, &unifiedOrderResp) if err != nil { return nil, err } return &unifiedOrderResp, nil } func (wp *WechatPay) sign(req *UnifiedOrderRequest) string { m := make(map[string]string) m["appid"] = req.AppID m["mch_id"] = req.MchID m["nonce_str"] = req.NonceStr m["body"] = req.Body m["out_trade_no"] = req.OutTradeNo m["total_fee"] = fmt.Sprintf("%d", req.TotalFee) m["spbill_create_ip"] = req.SpbillCreateIP m["notify_url"] = req.NotifyURL m["trade_type"] = req.TradeType m["openid"] = req.OpenID var keys []string for k := range m { keys = append(keys, k) } sort.Strings(keys) var buf bytes.Buffer for _, k := range keys { v := m[k] if v != "" { buf.WriteString(k) buf.WriteString("=") buf.WriteString(v) buf.WriteString("&") } } buf.WriteString("key=") buf.WriteString(wp.Key) return strings.ToUpper(fmt.Sprintf("%x", md5.Sum(buf.Bytes()))) } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值