Итак, я предполагаю, что у вас есть очень хороший URL для изображения.
Давайте начнем с создания маршрута в GET /image
:
routes.get("image", use: image)
func image(_ request: Request) -> EventLoopFuture<View> {
}
Чтобы правильно отобразитьВ представлении «Лист» нам понадобится контекст, содержащий данные для переменных «Лист».Это будет выглядеть примерно так:
struct ImageContext: Encodable {
let title: String
let imageURL: String
}
Нам также нужно отредактировать ваш листовой файл, чтобы он использовал свойства в контексте:
#set("content") {
<h1>#(title)</h1>
<img src="#(imageURL)">
}
#embed("base")
Теперь мы можем отрендерить листовой файлбез нового контекста и вернуть полученное представление из обработчика маршрута.Вот как будет выглядеть реализация обработчика маршрута image
:
func image(_ request: Request) -> EventLoopFuture<View> {
let context = ImageContext(title: "Image", imageURL: preparePresignedImageUrl(request: request)
return try request.view().make("showImage", context)
}
Теперь вы сможете получить доступ к localhost:8080/image
из вашего браузера, и изображение будет там!