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

打印 上一主题 下一主题

主题 889|帖子 889|积分 2671

目录

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
写入内容
  1. syntax = "v1"
  2. type Request {
  3.         Name string `path:"name,options=you|me"`
  4. }
  5. type Response {
  6.         Message string `json:"message"`
  7. }
  8. service demo-api {
  9.         @handler DemoHandler
  10.         get /from/:name (Request) returns (Response)
  11. }
  12. //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
检察文件目录
  1. .
  2. ├── demo.api
  3. ├── demo.go
  4. ├── etc
  5. │   └── demo-api.yaml
  6. ├── go.mod
  7. ├── go.sum
  8. ├── internal
  9. │   ├── config
  10. │   │   └── config.go
  11. │   ├── handler
  12. │   │   ├── demo_handler.go
  13. │   │   └── routes.go
  14. │   ├── logic
  15. │   │   └── demo_logic.go
  16. │   ├── svc
  17. │   │   └── service_context.go
  18. │   └── types
  19. │       └── types.go
  20. └── static
  21.     └── html
  22.         └── 1.html
复制代码
写入静态服务代码

修改demo.go
  1. package main
  2. import (
  3.         "flag"
  4.         "fmt"
  5.         "net/http"
  6.         "demo/internal/config"
  7.         "demo/internal/handler"
  8.         "demo/internal/svc"
  9.         "github.com/zeromicro/go-zero/core/conf"
  10.         "github.com/zeromicro/go-zero/rest"
  11. )
  12. var configFile = flag.String("f", "etc/demo-api.yaml", "the config file")
  13. func main() {
  14.         flag.Parse()
  15.         var c config.Config
  16.         conf.MustLoad(*configFile, &c)
  17.         // 在 `./static/html` 目录下有需要对外提供的文件,比如有个文件 `1.html`,
  18.         // 以 `http://127.0.0.1:8888/public/1.html` 这样的路径就可以访问该文件了。
  19.         //  public 在浏览器中访问的目录 映射到./static/html目录
  20.         server := rest.MustNewServer(c.RestConf, rest.WithFileServer("/static", http.Dir("./static/html"))) #
  21.         defer server.Stop()
  22.         ctx := svc.NewServiceContext(c)
  23.         handler.RegisterHandlers(server, ctx)
  24.         fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port)
  25.         server.Start()
  26. }
复制代码
启动api服务

go mod tidy
go run demo.go
访问1.html
  1. curl -XGET http://127.0.0.1:8888/public/1.html
  2. hello 1.html
复制代码

参考文档


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

刘俊凯

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表