Advertisement
Guest User

Untitled

a guest
Mar 29th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. /**
  2. * fetch util
  3. * @type {Object<rest>}
  4. * @typeof {function(api, param):object} rest
  5. * @param {string} api - absolute api
  6. * @param {object} param
  7. * @return {object} {response, error}
  8. */
  9. require('whatwg-fetch');
  10.  
  11. export default (() => {
  12. function core(api, param) {
  13. // cookie
  14. param.credentials = 'include';
  15.  
  16. return window.fetch(api, param)
  17. .then(res => res.json())
  18. .catch(error => {
  19. setTimeout(() => { throw new Error(error); });
  20. return { error: error.message };
  21. });
  22. };
  23.  
  24. function serialize(obj) {
  25. return Object.keys(obj).map(p => `${encodeURIComponent(p)}=${encodeURIComponent([obj[p]])}`).join('&');
  26. };
  27.  
  28. return {
  29. get(api, param) {
  30. return param ? core(`${api}?${serialize(param)}`, param) : core(`${api}`, {});
  31. },
  32. post(api, param = {}) {
  33. return core(`${api}`, {
  34. method: 'POST',
  35. headers: { 'Content-Type': 'application/json' },
  36. body: JSON.stringify(param)
  37. });
  38. },
  39. upload(api, param = {}) {
  40. return core(`${api}`, {
  41. method: 'POST',
  42. body: param
  43. });
  44. }
  45. };
  46. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement