Как импортировать под-маршруты из других пакетов - PullRequest
0 голосов
/ 01 октября 2019

Вместо записи каждого маршрута в main (), например

func main() {
    e := echo.New()
    e.GET("/api", sayHello)
    e.GET("/api/music", getMusic)
    e.GET("/api/user/:id", getDetail)
    e.POST("/api/user", addUser)
    // ...
}

Как я могу импортировать все эти под-маршруты из файла с именем api.go и использовать их в основной функции? Аналогично

import "./API"
func main() {
    e := echo.New()
    e.UseSubroute(API.Routes) // <-- similar to this
    // ...
}

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Что вы можете сделать, это использовать echo.Group и передать его в пакет api, и инициализировать там обработчик маршрутов.

package api

import (
    "github.com/labstack/echo"
)

func UseSubroute(group *echo.Group)  {
    group.GET("/", sayHello)
    group.GET("/music", getMusic)
    group.GET("/user/:id", getDetail)
    group.POST("/user", addUser)
}

и в основном вы можете просто импортировать ваш api пакет.

package main

import (
    "github.com/labstack/echo"
    "your-repo/path-to/api" // your api package
)

func main() {
    e := echo.New()
    apiGroup := e.Group("/api")
    api.UseSubroute(apiGroup)
    // ...
}
0 голосов
/ 01 октября 2019

У объекта Echo нет этого метода. Я думаю, что вам нужен код?

API.go:

package main

import "github.com/labstack/echo"

func UseSubroute(echo *echo.Echo)  {
    echo.GET("/api", sayHello)
    echo.GET("/api/music", getMusic)
    echo.GET("/api/user/:id", getDetail)
    echo.POST("/api/user", addUser)
}

main.go:

package main

import "github.com/labstack/echo"

func main() {
    e := echo.New()
    UseSubroute(e)
}

Эти два файла должны быть размещены в одном каталоге.

Вам это нужно?

...