Я хотел бы спросить кое-что об архитектуре программного обеспечения. Я структурирую свой бэкэнд, чтобы следовать чистой архитектуре / гексагональной архитектуре или чему-то еще. Я хочу сказать, что я разделяю некоторые опасения.
В моем сервисе у меня есть репозиторий, реализация которого вызывает API из другого стороннего сервиса. Допустим, я хочу получить сущность. Реализация репозитория getEntity(id)
вызывает только конечную точку API. Если объект не найден, я должен выбросить свой пользовательский NotFoundException
на уровне реализации API или на уровне хранилища?
Repository.ts
async class EntityRepository {
getEntity(id): Entity {
const entity = await this.apiService.getEntity(id);
return entity
}
}
APIService.ts
async class APIService {
getEntityAPI(id) {
const response = axios.get(3rd_party_api_url, id);
return response;
}
}
Я еще не поместил ошибку выброса, потому что я не знаю, куда поместить ошибку. Что лучше ? Киньте его в репозиторий или в API Service?