статические файлы не обслуживаются правильно при использовании подстановочного знака - PullRequest
0 голосов
/ 17 октября 2019

Используя GOA , я определил службу для обслуживания статических файлов с использованием подстановочного знака (как описано в документации ):

var _ = Service("static", func() { 
    Files("/static/*filepath", "./static/")
})

Но когда я запускаюслужба, конечная точка всегда извлекает все содержимое, которое находит в каталоге . / static / , кажется, что она вообще не учитывает раздел с подстановочными знаками.

Например, если у меня есть . / Static / uploads / file1.jpg , и я запрашиваю localhost / static / uploads / file1.jpg или localhost / static /что-нибудь , то служба извлекает следующее:

<code><pre>
<a href="uploads/">uploads/</a>

Копаясь в коде, я считаю, что проблема в сгенерированном / gen / http / static /server / server.go file:

// Mount configures the mux to serve the static endpoints.
func Mount(mux goahttp.Muxer, h *Server) {
    MountCORSHandler(mux, h.CORS)
    MountStatic(mux, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        http.ServeFile(w, r, "./static/")
    }))
}

// MountStatic configures the mux to serve GET request made to
// "/static/*filepath".
func MountStatic(mux goahttp.Muxer, h http.Handler) {
    mux.Handle("GET", "/static/*filepath", handleStaticOrigin(h).ServeHTTP)
}

Насколько я вижу, сгенерированный код служит тому, что мы передали в качестве базового пути, несмотря ни на что, он не учитывается, если мы настроилиподстановочный знак вообще (он использует его только для соответствия запросу, но не для настройки файла, который мы будем обслуживать).

Я считаю, что это работало нормально в v2, я обнаружил эту проблему в процессе миграции на v3.

Как я уже сказал, это похоже на ошибку в GOA, но, возможно, я чего-то здесь упускаю. Я создал проблему в репо для получения дополнительной информации ( # 2321 )

1 Ответ

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

Согласно ответу в выпуске Github (# 2321), кажется, что в документах произошла ошибка, и мы должны использовать фигурные скобки в шаблоне:

Спасибо за отчетв документах есть опечатка, вместо этого путь в проекте должен быть / static / {* filepath} (с фигурными скобками, окружающими подстановочный знак).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...