170 похожих чатов

Всем привет! скажите пожалуйста, как я могу заполучить контроль над

http.ResponseWriter в другой функции?

Я заготовил себе хэлпер функцию которая будет писать туда структурированное сообщение, например вот так:

type APIError struct {
Code int `json:"code"`
Message string `json:"message"`
}


func WriteAPIError(w http.ResponseWriter, schema *schemas.APIError) {
w.Header().Set("Content-Type", "application/json")
if err := json.NewEncoder(w).Encode(schema); err != nil {
...
}
return
}

Я хотел вызывать это в любом HTTP обработчике примерно так:

func (c *HTTPController) HealthCheck(w http.ResponseWriter, r *http.Request) {
WriteAPIError(w, http.StatusInternalServerError, &schemas.APIError{
Code: schemas.ErrCodeInternalServerError,
Message: schemas.ErrMessageInternalServerError,
})
return
}

Но т.к http.ResponseWriter передается не по ссылке, то очевидно что это будет бесполезно и сам объект никак не изменится. Как это красивее всего сделать? Спасибо большое)

5 ответов

3 просмотра

Не очевидно. ResponseWriter это интерфейс

rglitchard- Автор вопроса
Andrey Burov
Не очевидно. ResponseWriter это интерфейс

да, вы правы. Но в любом случае я не смогу туда передать &w, т.к это тогда уже в теле функции не будет работать, методы просто красными становятся и как бы все, я не знаю чо делать)

rglitchard
да, вы правы. Но в любом случае я не смогу туда пе...

передавайте w куда хотите w.Write и т.п. будет нормально работать

rglitchard- Автор вопроса
Andrey Burov
передавайте w куда хотите w.Write и т.п. будет нор...

я передавал просто w, но мой пример выше который я скинул не работает у меня. Т.к в примере мой метод WriteAPIError должен вернуть 500 код, но возвращает 200. Из-за этого я и подумал что оно не модифицирует объект

Похожие вопросы

Обсуждают сегодня

А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Есть вопрос: допустим есть железка с каким-то интерфейсом(допустим usb), но как по этому интерфейсу железкой управлять неизвестно, прог нету, а управлять очень хочется надо. К...
Mixail Frolov
15
а как ловят такое ghci> res <- getPos2 urlt 0 (alist !! 0) 200 ghci> res SearchAtom (Search "www.google.com" "/search?q=" "Haskell") "haskell.org" (SearchTS [(2024-05-06 07:...
Fedor
14
Так а кто может спарсить всех участников чата? Идишники
Magic
13
всем привет почти закончил курс После него можно писать свою операционку? Какие библиотеки надо использовать и куда дальше копать для изучения
Linus
13
Ребята, а из API геокодеров (по адресам в РФ) что сейчас актуального и есть ли среди актуального бесплатное/с нормаотным лимитом запросов? ситуация простая - на сайте периоди...
Dreamer_0x01 VeseloV
8
короче сгенерила мне эта штука код на ассемблере: struc string val { common local .value dq .value .value: if ~val eq db val end if db 0 } fo...
Vi Chapmann Chapmann
12
Карта сайта