Для работы с API удобно будет взять готовую библиотеку, у которой методы http запросов возвращают промисы или объекты с аналогичными свойствами.
Я могу посоветовать
axios, в простом случае хватит и нативного метода fetch.
Затем, вы можете создать отдельные классы - сервисы для работы с конкретными разделами API (например UsersService для работы со списком пользователей, AuthService для авторизации). И методы сервиса принимают необходимые аргументы, и возвращают методы axios (например UsersService.get(id) возвращает axios(`api/url/users/${id}`))
И эти сервисы вы используете в ваших "умных" компонентах, в методе componentDidMount.
Ссылка на статью с примером
тут