Что произойдет, если Http.get запрос в Elm получит другой тип ответа, отличный от ожидаемого?

#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 от ошибок ожидания.