#http #elm
#http #вяз
Вопрос:
В руководстве по Elm, разделе Http, есть пример кода, в котором определяется Cmd
для обработки во время выполнения:
Http.get
{ url = "https://elm-lang.org/assets/public-opinion.txt"
, expect = Http.expectString GotText
}
Итак, мы ожидаем, что ответ сервера будет текстовым, и передаем тип сообщения ( GotText
) в Http.expectString
функцию, чтобы позже результат был прикреплен к GotText
. Вот GotText
определение (оно имеет тип: Результат):
type Msg
= GotText (Result Http.Error String)
Таким образом, если во время запроса произойдет какая-либо ошибка плюс ожидаемый тип ответа, она будет зафиксирована внутри, Http.Error
прикрепленного к GotText
, в противном случае произойдет ошибка во время выполнения (что неверно в ELm). Мой вопрос в том, что, если сервер вернет что-то другое, чем текст, т. Е. двоичный файл? AFAIK не существует такой ошибки Http, как bad response
, так что этот тип ошибки все еще встроен внутри Http.Error
в ELm?
Ответ №1:
Но это так. Из документов elm / http по Http.Ошибка:
BadBody
означает, что вы получили ответ с хорошим кодом состояния, но тело ответа было чем-то неожиданным. Строка в данном случае является отладочным сообщением, которое объясняет, что пошло не так с вашим JSON-декодером или чем-то еще.
Комментарии:
1. Спасибо. Не нашел эту часть документации в моем поиске. Но использование
Http.Error
name в качестве типа ошибки вводит в заблуждение.2. Потому что это не ошибка, определенная протоколом http? Да, я думаю, я не совсем не согласен, но кажется удобным свести ошибки ожидания к этому типу, а не добавлять другой уровень, чтобы отличать правильные ошибки http от ошибок ожидания.