首页 > 其他分享 >go-zero微服务框架的静态文件服务

go-zero微服务框架的静态文件服务

时间:2024-08-04 21:18:36浏览次数:13  
标签:服务 demo html zero api static go

目录

go-zero微服务框架的静态文件服务

应用场景

通过 go-zero 的 rest.WithFileServer("/public", http.Dir("./static/html")) 来给 restful 服务增加文件服务能力。即开放公开目录给外部访问。

go-zero版本

go-zero v1.7.0

新建项目目录

mkdir demo
cd demo

新建 demo.api 文件

demo.api

写入内容

syntax = "v1"

type Request {
	Name string `path:"name,options=you|me"`
}

type Response {
	Message string `json:"message"`
}

service demo-api {
	@handler DemoHandler
	get /from/:name (Request) returns (Response)
}

//goctl api go -api core.api -dir ./ -style go_zero

生成api代码

goctl api go -api core.api -dir ./ -style go_zero

新建静态1.html文件

demo/static/html/1.html

写入内容
hello 1.html

查看文件目录

.
├── demo.api
├── demo.go
├── etc
│   └── demo-api.yaml
├── go.mod
├── go.sum
├── internal
│   ├── config
│   │   └── config.go
│   ├── handler
│   │   ├── demo_handler.go
│   │   └── routes.go
│   ├── logic
│   │   └── demo_logic.go
│   ├── svc
│   │   └── service_context.go
│   └── types
│       └── types.go
└── static
    └── html
        └── 1.html

写入静态服务代码

修改demo.go

package main

import (
	"flag"
	"fmt"
	"net/http"

	"demo/internal/config"
	"demo/internal/handler"
	"demo/internal/svc"

	"github.com/zeromicro/go-zero/core/conf"
	"github.com/zeromicro/go-zero/rest"
)

var configFile = flag.String("f", "etc/demo-api.yaml", "the config file")

func main() {
	flag.Parse()

	var c config.Config
	conf.MustLoad(*configFile, &c)
	// 在 `./static/html` 目录下有需要对外提供的文件,比如有个文件 `1.html`,
	// 以 `http://127.0.0.1:8888/public/1.html` 这样的路径就可以访问该文件了。 
	//  public 在浏览器中访问的目录 映射到./static/html目录
	server := rest.MustNewServer(c.RestConf, rest.WithFileServer("/static", http.Dir("./static/html"))) #
	defer server.Stop()

	ctx := svc.NewServiceContext(c)
	handler.RegisterHandlers(server, ctx)

	fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port)
	server.Start()
}

启动api服务

go mod tidy
go run demo.go

访问1.html

curl -XGET http://127.0.0.1:8888/public/1.html
hello 1.html

image

参考文档

标签:服务,demo,html,zero,api,static,go
From: https://www.cnblogs.com/haima/p/18342203

相关文章

  • Go 静态编译及在构建 docker 镜像时的应用
    Go语言具有跨平台和可移植的特点,同时还支持交叉编译,可以在一个系统上编译出运行在另一个系统上的二进制可执行文件,这是因为Go在编译时支持将依赖的库文件与源代码一起编译链接到二进制文件中,所以在实际运行时不再需要依赖运行环境中的库,而只需要一个二进制文件就可以运行,在构建......
  • Airflow vs. Luigi vs. Argo vs. MLFlow vs. KubeFlow
    Airflowvs.Luigivs.Argovs.MLFlowvs.KubeFlowhttps://www.datarevenue.com/en-blog/airflow-vs-luigi-vs-argo-vs-mlflow-vs-kubeflow Airflowisthemostpopularsolution,followedbyLuigi.Therearenewercontenderstoo,andthey’reallgrowingfast......
  • ubuntu22.04容器安装ssh服务
    除了特别说明外,否则以下命令均为ubuntu22.04容器内执行!!!安装查看ubuntu22.04有没有安装openssh-server,执行命令:sudodpkg--list|grepssh没有找到openssh-server的包,很显然,没有安装,那么就开始安装,执行:sudoaptinstallopenssh-server安装完成后,通过上图相关的包已经......
  • ZeRO:一种去除冗余的数据并行方案
    ZeRO:一种去除冗余的数据并行方案目前训练超大规模语言模型主要有两条技术路线:TPU+XLA+TensorFlow/JAXGPU+Pytorch+Megatron+DeepSpeed前者由Google主导,由于TPU和自家云平台GCP深度绑定,对于非Googler来说并不友好后者背后则有NVIDIA、Meta、MS等大厂加持,社区氛围活......
  • Go中使用Zap日志库与Lumberjack日志切割
    Go中使用Zap日志库与Lumberjack日志切割Go中使用Zap日志库与Lumberjack日志切割原创 何泽丰 ProgrammerHe  2024年06月11日20:15 广东 听全文Go中使用Zap日志库与Lumberjack日志切割概述在项目中使用日志记录有助于快速定位和修复问题,能帮助我们监控系统健康状......
  • [Rust]使用Rocket框架搭建简单Web服务
    本文主要讲述如何在Rust中使用Rocket搭建简易Web服务1.添加Rocket库Cargo.toml[dependencies]rocket={version="0.5.1",features=["secrets"]}2.创建服务2.1创建一个启动脚本main.rsuserocket::{launch,routes};#[launch]fnrocket()->_{rocket......
  • Go必知必会:深入剖析Go语言中的结构体
    Go必知必会:深入剖析Go语言中的结构体原创王中阳王中阳 2024年07月24日06:03北京1人听过文末有面经共享群本文来自极客学院专栏,欢迎订阅:Go入门进阶实战专栏:其实学Go很简单。 Go语言以其清晰的语法和强大的内置类型系统,为构建高效且易于维护的软件程序提供了坚实的基础......
  • Jquery正确发送headers值,Django后台request.Meta取值
    jquery发送请求$.ajax({method:"POST",headers:{"Auth_xxx":"yes"},data:{},url:"",success:function(response){console.log("respons......
  • 云计算第二阶段:----监控与服务安全SECURITY
    本模块内容,主要讲述服务器的安全防护与配置软件相关知识。分为网络防护软件介绍、配置与使用用,网络安全相关知识浅度解析。涉及软件有prometheus,graphna,zabbix。网络安全方面涉及基于debianlinux系统的kali版本liunx的介绍与简单使用。SECURITYDAY1环境准备:主机......
  • 为什么我在 html 页面的格式化段落中没有收到 google gemini 响应
    我在我的django中使用googlegeminiapi,一切都很顺利,在终端中生成的Gemini响应非常完美,两个段落和所有段落之间都有空格,但是当我将此响应传递到html页面时,所有格式都消失了,那里两段之间没有空格,我不知道为什么它在响应中产生不必要的星星**,请告诉我如何修复它。......