static.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package binding
  2. import "strings"
  3. // Static 静态绑定
  4. // 参数:
  5. // - binder: 用来执行绑定的binder
  6. // - item: 执行绑定的参数
  7. func Static(binder *Binder, item *StaticBindItem) {
  8. item.bind(binder)
  9. }
  10. // StaticFile 静态文件绑定
  11. // 参数:
  12. // - binder: 用来执行绑定的binder
  13. // - item: 执行绑定的参数
  14. func StaticFile(binder *Binder, item *StaticFileBindItem) {
  15. item.bind(binder)
  16. }
  17. // StaticBindItem 静态BindItem
  18. type StaticBindItem struct {
  19. // 创建的静态绑定API的URL相对路径
  20. RelativePath string
  21. // 目录的根路径
  22. Root string
  23. // 传递的RelativePath是否包含了路由的BasePath
  24. WithBasePath bool
  25. }
  26. func (item *StaticBindItem) bind(binder *Binder) {
  27. if item.WithBasePath {
  28. binder.router.Static(strings.TrimPrefix(item.RelativePath, binder.router.BasePath()), item.Root)
  29. } else {
  30. binder.router.Static(item.RelativePath, item.Root)
  31. }
  32. }
  33. // StaticFileBindItem 静态文件BindItem
  34. type StaticFileBindItem struct {
  35. // 创建的静态绑定API的URL相对路径
  36. RelativePath string
  37. // 文件路径
  38. FilePath string
  39. // 传递的RelativePath是否包含了路由的BasePath
  40. WithBasePath bool
  41. }
  42. func (item *StaticFileBindItem) bind(binder *Binder) {
  43. if item.WithBasePath {
  44. binder.router.StaticFile(strings.TrimPrefix(item.RelativePath, binder.router.BasePath()), item.FilePath)
  45. } else {
  46. binder.router.StaticFile(item.RelativePath, item.FilePath)
  47. }
  48. }