baseComponent.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import fetch from 'node-fetch';
  2. export default class BaseComponent {
  3. constructor(){
  4. }
  5. async fetch(url = '', data = {}, type = 'GET', resType = 'JSON'){
  6. type = type.toUpperCase();
  7. resType = resType.toUpperCase();
  8. if (type == 'GET') {
  9. let dataStr = ''; //数据拼接字符串
  10. Object.keys(data).forEach(key => {
  11. dataStr += key + '=' + data[key] + '&';
  12. })
  13. if (dataStr !== '') {
  14. dataStr = dataStr.substr(0, dataStr.lastIndexOf('&'));
  15. url = url + '?' + dataStr;
  16. }
  17. }
  18. let requestConfig = {
  19. method: type,
  20. headers: {
  21. 'Accept': 'application/json',
  22. 'Content-Type': 'application/json'
  23. },
  24. }
  25. if (type == 'POST') {
  26. Object.defineProperty(requestConfig, 'body', {
  27. value: JSON.stringify(data)
  28. })
  29. }
  30. let responseJson;
  31. try {
  32. let response = await fetch(url, requestConfig);
  33. if (resType === 'TEXT') {
  34. responseJson = await response.text();
  35. }else{
  36. responseJson = await response.json();
  37. }
  38. } catch (error) {
  39. throw new Error(error)
  40. }
  41. return responseJson
  42. }
  43. }