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