Во-первых, в вашем утверждении указано, что вы хотите вернуть ошибку 400, а также ошибку 404 - вы не можете этого сделать. Вы отправляете один ответ с сервера, поэтому он получает ровно один код ответа. Вы можете отправить 207, но мы не говорим здесь о нескольких ресурсах, так что не делайте этого. На мой взгляд, ошибка 400 действительно является правильным ответом для отсутствующего JWT, поскольку это неверный запрос. 404 «Not Found» означает, что запрошенный ресурс (вещь на стороне сервера) не может быть найден. Это не значит, что что-то в запросе не найдено.
Что касается установки вашего пользовательского сообщения об ошибке, вам, скорее всего, не повезет, если вы не измените исходный код Echo. Этот конкретный ответ приходит из обработчиков промежуточного программного обеспечения самого пакета (вы можете увидеть его здесь ). Это в основном абстрагировано от вас, поэтому, не глядя на внутреннюю работу пакета, невозможно было бы определить, откуда это исходит, и, честно говоря, с этим мало что можно легко поделать. ErrJWTMissing - это действительно переменная, которую пакет использует внутренне для этого сообщения об ошибке, но Echo, по-видимому, не предоставляет экспортированный метод установки для изменения этого значения, поэтому вы застряли на том, что это такое.
Если вы действительно хотите установить собственный метод ошибки для этого случая, я думаю, что ваши варианты будут:
- Напишите ваше собственное промежуточное программное обеспечение для перехвата запроса до того, как он был обработан промежуточным программным обеспечением Echo, где вы можете обработать запрос любым способом.
- Отредактируйте источник Echo, чтобы он работал так, как вы хотели, чтобы он работал - в частности, все, что вам нужно сделать, это отредактировать ErrJWTMissing.
По сути, Echo пытается помочь вам, обрабатывая всю эту обработку промежуточного программного обеспечения для вас, и это большая работа или хакерство, чтобы отменить эту работу, все еще используя Echo.