ООП в JavaScriptКлассыmedium

QueryParams

https://pokeapi.co/api/v2/pokemon/?offset=20&limit=5

Это URL — Uniform Resource Locator, также известный как адрес сайта.

Часть с offset=20&limit=5 называется query string и позволяет указать параметры запроса. Например, в примере выше мы запрашиваем список покемонов и указываем:

  • offset — сколько покемонов из начала списка пропустить;
  • limit — максимальное количество покемонов в ответе.

Например, offset=20&limit=5 возвращает покемонов с номерами 21, 22, 23, 24 и 25 (5 штук, первые 20 пропустили).

Запрос с параметрами offset=55&limit=3 вернет покемонов с номерами 56, 57, 58 (3 штуки, первые 55 пропустили)

Необходимо реализовать класс QueryParams, который позволит формировать строку в формате query string.

const u = new QueryParams(); u.append("genre", "comedy"); u.append("year", "2023"); console.log(u.toString()); // "genre=comedy&year=2023"

Мы хотим реализовать базовые методы:

  • constructor
  • append
  • set
  • delete
  • get
  • getAll
  • has
  • toString

Constructor

const u1 = new QueryParams("genre=comedy&year=2023"); console.log(u1.get("genre")); // "comedy" const u2 = new QueryParams({ genre: "comedy", year: "2023" }); console.log(u2.get("year")); // "2023"

Append и Set

const u3 = new QueryParams("genre=comedy&year=2023"); u3.append("year", "2024"); u3.append("year", "2025"); console.log(u3.toString()); // "genre=comedy&year=2023&year=2024&year=2025" u3.set("year", "1999"); console.log(u3.toString()); // "genre=comedy&year=1999"

Delete

const u4 = new QueryParams("genre=comedy&year=2023"); u4.delete("year"); console.log(u4.toString()); // "genre=comedy"

Get и GetAll

const u5 = new QueryParams( "genre=comedy&year=2023&year=2024&year=2025" ); console.log(u5.get("genre")); // "comedy" console.log(u5.get("year")); // "2023" console.log(u5.getAll("genre")); // ["comedy"] console.log(u5.getAll("year")); // ["2023", "2024", "2025"]

Has

const u6 = new QueryParams( "genre=comedy&year=2023&year=2024&year=2025" ); console.log(u6.has("year")); // true console.log(u6.has("year", "2023")); // true console.log(u6.has("year", "1999")); // false

Фактически наш метод является упрощенной версией стандартного класса URLSearchParams.