Перейти к основному содержимому

http-сервис

http-сервис​

Объект с методами одного ресурса. Запросы идут через общий httpClient: в нём уже заданы baseURL и заголовки. Метод возвращает данные, признак успеха и ошибку, а не сырой ответ axios.

import httpClient from './http-client';

const planetsService = {
async getPlanets(params) {
try {
const { data, status } = await httpClient.get('/planets', {
params,
});

return {
data,
success: status === 200,
error: null,
};
} catch (error) {
return {
data: null,
success: false,
error,
};
}
},

async getPlanet(id) {
try {
const { data, status } = await httpClient.get(`/planets/${id}`);

return {
data,
success: status === 200,
error: null,
};
} catch (error) {
return {
data: null,
success: false,
error,
};
}
},

async createPlanet(payload) {
try {
const { data, status } = await httpClient.post('/planets', payload);

return {
data,
success: status === 201,
error: null,
};
} catch (error) {
return {
data: null,
success: false,
error,
};
}
},
};

planetsService
.getPlanets({
limit: 50,
offset: 0,
sort: {
name: 'ASC',
},
})
.then(({ data, success, error }) => {
if (success) {
console.log(data);
} else {
console.log(error);
}
});

const showPlanets = async () => {
const { data, success, error } = await planetsService.getPlanets({
limit: 50,
offset: 0,
sort: {
name: 'ASC',
},
});

if (success) {
console.log(data);
} else {
console.log(error);
}
};

showPlanets();

Список читают через getPlanets, одну планету — через getPlanet(1), создание — через createPlanet. Фильтр и сортировка приходят аргументом params и уходят в query-строку.