Всякий раз, когда я работаю с .NET HttpClient, я считаю, что API очень громоздко работает, особенно по сравнению с предыдущими .NET HTTP-клиентами (WebClient) и клиентами с других языков. Как вы можете видеть в этом SO question, многие люди пытались просто правильно настроить заголовок «Content-Type» для запросов HttpClient.C# HttpClient: Почему MediaTypeWithQualityHeaderValue?
Мой вопрос: Какова цель параметра MediaTypeWithQualityHeaderValue при попытке установить свойство заголовка «Content-Type» в запросе? The MSDN documentation просто заявляет:
Представляет значение заголовка содержимого с дополнительным качеством.
... который полезен.
Похоже, что «Content-Type» - это простое строковое значение в заголовке запроса, почему HttpClient сделал его намного более сложным, чем это, и есть ли какая-либо польза от дополнительной сложности?
Интересно, так что значение «q» задает MediaTypeWithQualityHeader, например, значение заголовка «Content-Type: application/json» и почему строка достаточна? Документ MSDN просто говорит «дополнительное качество», как показано в моем первоначальном вопросе? –
q-значение используется для указания приоритетов для списка (например, список медиа-типов в заголовке Accept). Чем выше число, назначенное элементу списка, тем больше оно предпочтительнее для приложения. 0 будет означать, что он абсолютно нежелателен. В нашем сценарии с заголовком Accept, если сервер не поддерживает тип с наивысшим значением q, тогда он упадет до следующего наивысшего q-значения. – Qyaffer
Благодарим вас за информацию @Qyaffer. Предположительно, MediaTypeWithQualityHeaderValue устанавливает значение q для некоторого статически определенного, неизвестного (без копания исходного кода) значения. Я до сих пор не понимаю, почему HttpClient накладывает эту дополнительную сложность на разработчика? –