Hej,
Potrzebuje zrobić sobie funkcje do budowania zapytan API, tutaj pytam glownie o generowanie endpointu.
Podstawowy endpoint ma format:

https://domain/api/v1/public/resource/optionals

Użytkownik w GUI może sobie wykilkać o jakie dane chce poprosić, następnie funkcja ma zbudowac na tej podstawie cały request. Nie wiem za dużo o Jsie ale na ten moment mam to do budowania endpointu


/** 
 * Builds and returns endpoint based on user pref
 * 
 * @param {string}    queryParams   Params for a request chosen
 * @param {string}    appDomain     Project domain
 * @param {string}    resourceType  Type of a resource requested
 * @param {int}       pageNum       Page Number for paginated requests
 * 
 * @returns {string}  endpoint     Generated endpoint
 */
class UrlBuilder {
  constructor(queryParams) {
    this.queryParams = queryParams
  }

  setAppDomain(appDomain) {
    this.appDomain = appDomain
    return this
  }

  setRequestType(resourceType) {
    this.resourceType = getResourceType(resourceType, this.queryParams)
    return this
  }

  setPage(pageNum = 1) {
    this.page = pageNum
    return this
  }

  build() {
    const parsedParams = parseQueryParams(this.queryParams)
    return `https://${this.appDomain}/api/v1/public/${this.resourceType}/?page=${this.page}&${parsedParams}`
  }
}


/** 
 * Builds and returns endpoint based on user pref
 * 
 * @param {string}    resourceType  Type of a resource requested
 * @param {object}    queryParams   Optional request params
 * 
 * @returns {string}  path          Resource path
 */
function getResourceType(resourceType, queryParams) {
  const types = {
    [EMAIL_OPTION]:'email-data',
    [USER_OPTION]:`user/${queryParams.resourceId}/event`,
    [SEGMENT_OPTION]: `segments/${queryParams.resourceId}/users`,
    [EVENT_OPTION]: `events/${queryParams.resourceId}`,
    [FORM_OPTION]: `modals/${queryParams.resourceId}`
  }
  return types[resourceType]
}

Gotowy endpoint wygląda tak:

https://domain/api/v1/public/email-data/?page=1&date_from=2022-08-11&date_until=2022-09-07

No i działać działa ale tak sobie myśle jak można by to usprawnić, jak zmienić? Pokierujcie prosze bo sam nie wiem czy kontynuowac w tym kierunku bo jeszcze mam czas i miejsce na zmiany.
Dzieki