Когда вы используете API RESTful, когда вы рекомендуете использовать RestSharp и когда HttpClient?

Я искал этот ответ в течение некоторого времени, но не имел успеха.

Я всегда использовал RestSharp, и я нахожу его довольно аккуратным, но потом понял, что есть HttpClient, предоставленный Microsoft, и на первый взгляд он похож на ту же функциональность.

(Я также слышал о ServiceStack, и большинство людей предпочитают его по сравнению с остальными альтернативами, но платить так много сейчас не вариант - и не использовать более старую версию).

Это просто вопрос личной симпатии или существуют ли какие-либо плюсы и минусы использования того или другого - или, может быть, существуют конкретные сценарии, в которых один из них может соответствовать друг другу лучше?

Спасибо заранее!

Ответ 1

Во многом это зависит от личных предпочтений, как вы и предполагали. Пара баллов:

  • RestSharp вышел за годы до HttpClient и был намного лучше по функциональности и простоте использования, чем все, что Microsoft выпускала в то время.

  • HttpClient имеет строго асинхронный (как в async/await) API; RestSharp поддерживает как синхронные, так и асинхронные вызовы. Но если вы не застряли на старой платформе и/или не поддерживаете унаследованный код, у вас нет особых причин делать синхронные вызовы HTTP. (Не связывайте потоки, ожидающие потенциально длительный ввод-вывод!)

  • RestSharp охватывает большую часть территории, которой сам HttpClient не делает, в частности десериализацию ответов.

Я использовал RestSharp в течение нескольких лет, прежде чем переключиться на HttpClient (мне нужна была поддержка async/await, и, насколько мне известно, в то время RestSharp не поддерживала его, хотя и сейчас), и в конце концов я написал и выпустил свою собственную маленькую библиотеку Flurl.Http, который расширяет мой конструктор URL-адресов некоторыми беглыми методами HTTP/десериализации, которые являются всего лишь тонкой оболочкой для HttpClient и Json.NET.