webclient-fetch.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { IWebClient } from "./webclient";
  2. import { IWebClientOptions } from "./webclient-options";
  3. export default class WebClientFetch implements IWebClient {
  4. public async request(options: IWebClientOptions): Promise<string> {
  5. const fetchOptions: any = {
  6. headers: options.headers,
  7. method: options.method
  8. };
  9. if (options.body) {
  10. fetchOptions.body = options.body;
  11. }
  12. const res = await fetch(options.url, fetchOptions);
  13. console.log('res', res);
  14. return res.text();
  15. }
  16. public async requestJSON(options: IWebClientOptions): Promise<object> {
  17. if (!options.headers) {
  18. options.headers = {};
  19. }
  20. if (options.body) {
  21. options.headers['content-type'] = 'application/json';
  22. if (typeof options.body === 'object') {
  23. options.body = JSON.stringify(options.body);
  24. }
  25. }
  26. options.headers.accept = 'application/json';
  27. const fetchOptions: any = {
  28. headers: options.headers,
  29. method: options.method
  30. };
  31. if (options.formData) {
  32. fetchOptions.formData = options.formData;
  33. }
  34. if (options.body) {
  35. fetchOptions.body = options.body;
  36. }
  37. const res = await fetch(options.url, fetchOptions);
  38. console.log('res', res);
  39. return res.json();
  40. }
  41. }