Gin-Gonic Content-Type ограничение

Существует сервис, написанный на golang с использованием фреймворка gin-gonic.

Я всегда хочу поддерживать только application/json как MIME-тип, и было бы здорово, если бы он всегда был в UTF-8. Бизнес-логика службы может сломаться, если она будет получать значения в разных кодировках.

Является ли хорошей идеей написать собственное промежуточное программное обеспечение, которое проверяет, имеет ли заголовок Content-Type значение "application/json; charset=utf-8", и возвращает некоторый статус 4xx, если это не так?

ОБНОВЛЕНИЕ: только что узнал, что ctx.ContentType() не вернуть charset часть заголовка. Есть ли способ получить его?


person dmigo    schedule 23.12.2019    source источник
comment
Да, это хорошо.   -  person Зелёный    schedule 23.12.2019


Ответы (1)


Ничто не мешает вам просто посмотреть на заголовок "Content-Type" http напрямую, на мелодию ctx.Request.Header.Get("Content-Type").

Вспомогательный метод ContentType предоставляется gin-gonic специально для довольно распространенного случая запроса «чистого» MIME-типа входящих данных без особых хлопот.

person oakad    schedule 23.12.2019
comment
Не могли бы вы также добавить ответ на основную часть вопроса, чтобы я мог принять ответ? - person dmigo; 23.12.2019
comment
Я не знаю, о чем ваша заявка. В общем, кажется, вы говорите о стандартном механизме Accept-Charset/406, о котором вы можете прочитать в другом месте. - person oakad; 23.12.2019
comment
Не совсем. Accept-Charset указывает, какая кодировка используется клиент ожидает получить ответ. Я бы предпочел проверить, что клиент отправляет все как charset=utf-8 в запросе. - person dmigo; 23.12.2019