#angular #enums
Вопрос:
Поэтому я пытаюсь создать угловое приложение, используя лучшие практики, чтобы сделать его как можно более профессиональным. На данный момент я разделил приложение на различные модули, основной, общий и функциональный модуль. В моем основном модуле у меня есть моя конфигурация, модели и службы. Обычно, когда я создаю приложение, я создаю сервис для каждой модели и использую его во всех своих компонентах.
Но кто-то сказал мне, что лучше создать единую службу HTTP, отвечающую за все HTTP-вызовы. Что я и сделал, теперь этот человек использует перечисления для определения различных конечных точек API, что, я думаю, нормально при использовании статических конечных точек, но в моем случае у меня есть динамические маршруты, такие как «/Компании/{id}» или «/Компании/{id}/здания/{fk}» Можно ли использовать перечисления для чего-то подобного, или есть лучший способ сделать это?
Это метод для создания HTTP-вызовов:
/**
* This function is used to make API calls, you will only have to call this function,
* pass a method name, API URL, and some data if you want to do put or post calls,
* and process its response, any changes to the HTTP service will have to be applied here
* @param API path of the API
* @param method name of the API method
* @param data any required data for put or post calls
* @returns data or error response of the API call
*/
requestCall(api: EndPoints, method: ApiMethod, data?: any) {
let response;
switch (method) {
case ApiMethod.GET:
response = this.http.get(`${environment.apiUrl}${api}`)
.pipe(catchError((err) => this.handleError(err, this)));
break;
case ApiMethod.POST:
response = this.http.post(`${environment.apiUrl}${api}`, data)
.pipe(catchError((err) => this.handleError(err, this)));
break;
case ApiMethod.PUT:
response = this.http.put(`${environment.apiUrl}${api}`, data)
.pipe(catchError((err) => this.handleError(err, this)));
break;
case ApiMethod.DELETE:
response = this.http.get(`${environment.apiUrl}${api}`)
.pipe(catchError((err) => this.handleError(err, this)));
break;
default:
break;
}
return response;
}
Это мое перечисление (просто пример):
export type EndPoints = AuthEndPoints | BuildingEndPoints | RoomEndPoints | DeviceEndPoints;
export enum AuthEndPoints {
CHECK_SERVER = "/checkserver/",
LOGIN = "/auth/token/login/",
CURRENT_USER = "/auth/users/me/",
LOGOUT_USER = "/auth/token/logout/",
REGISTER = "/auth/users/",
// FORGOT_PASSWORD,
// RESET_PASSWORD,
// INVITE_MEMBER,
}
export enum BuildingEndPoints {
ALL_BUILDINGS = "/Buildings/",
BUILDING = "/Buildings/${id}"
}
заранее спасибо!