baseComponent.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. console.log(url)
  32. try {
  33. const response = await fetch(url, requestConfig);
  34. if (resType === 'TEXT') {
  35. responseJson = await response.text();
  36. }else{
  37. responseJson = await response.json();
  38. }
  39. } catch (error) {
  40. console.error(error)
  41. throw new Error(error)
  42. }
  43. return responseJson
  44. }
  45. }