/
netmann
/
test-elasticsearch
Обзор
Документация
Войти
/
netmann
/
test-elasticsearch
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
controllers/blogs_controller.go
90 строк
2 KB
Alexxtn105
рабочий поиск с использованием ElasticSearch
11 ноя 2024, 21:48
11 ноя 2024, 21:48
531ae2a
Код
Авторство
О чём код?
package controllers import ( "fmt" "github.com/gin-gonic/gin" "net/http" "strconv" "test-elasticsearch/models" ) func BlogsIndex(c *gin.Context) { //берем запрос (не параметр!!) `query` из адресной строки вида http://localhost:8087/blogs?query=commando query := c.Query("query") var blogs *[]models.Blog // если query не пустой, выполняем запрос на поиск if query != "" { //поиск по заданной строке blogs = models.BlogSearch(query) c.HTML( http.StatusOK, "blogs/index.tpl", gin.H{ "blogs": blogs, }, ) } else { //выводим все не удаленные блоги blogs = models.BlogsAll() c.HTML( http.StatusOK, "blogs/index.tpl", gin.H{ "blogs": blogs, }, ) } } func BlogsShow(c *gin.Context) { //берем ИД из параметра idStr := c.Param("id") id, err := strconv.ParseUint(idStr, 10, 64) if err != nil { fmt.Printf("Error: %v", err) } //находим блог по его ИД blog := models.BlogsFind(id) // рендерим HTML c.HTML( http.StatusOK, "blogs/show.tpl", gin.H{ "blog": blog, }, ) } //func BlogsShow_StandardHpptClient(w http.ResponseWriter, r *http.Request) { // // // Извлекаем ИД из параметров пути // //idStr := r.URL.Path[len("/blogs/"):] // Старый вариант (до версии 1.22) // idStr := r.PathValue("id") //сразу берем параметр из пути (стало доступно в go версии 1.22) // // конвертим строку в int // id, err := strconv.Atoi(idStr) // if err != nil { // http.Error(w, "Ivalid blog ID", http.StatusBadRequest) // return // } // //log.Println(idStr) // // blog := models.BlogsFind(uint64(id)) // // // преобразуем в слайс байтов // blogBytes, _ := json.Marshal(blog) // // // имитируем длительный процесс // //time.Sleep(time.Second * 2) // // // посылаем ответ пользователю // w.Header().Set("Content-Type", "application/json") // if _, err := w.Write(blogBytes); err != nil { // http.Error(w, "Failed to encode response", http.StatusInternalServerError) // } // //}