· 6 years ago · Nov 14, 2019, 09:00 AM
1const api = "https://some api";
2
3const username = "";
4const password = "";
5
6const token = btoa(username + ":" + password);
7
8window.request = async (url, params, method = "GET") => {
9 const options = {
10 method,
11 headers: {
12 "Content-Type": "application/json",
13 Authorization: "Basic " + token
14 }
15 };
16
17 if (params) {
18 if (method === "GET") {
19 url += "?" + objectToQueryString(params);
20 } else {
21 options.body = JSON.stringify(params);
22 }
23 }
24
25 const response = await fetch(api + url, options);
26
27 if (response.status !== 200) {
28 return generateErrorResponse(
29 "The server responded with an unexpected status."
30 );
31 }
32
33 const result = await response.json();
34
35 return result;
36};
37
38objectToQueryString = obj => {
39 return Object.keys(obj)
40 .map(key => key + "=" + obj[key])
41 .join("&");
42};
43
44generateErrorResponse = message => {
45 return {
46 status: "error",
47 message
48 };
49};
50
51const Fetch = {
52 get: (url, params) => request(url, params),
53 create: (url, params) => request(url, params, "POST"),
54 update: (url, params) => request(url, params, "PUT"),
55 remove: (url, params) => request(url, params, "DELETE")
56};