app.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. // gqReq1()
  2. function gqReq1() {
  3. //fetch(адрес, {method, headers: {}, body: JSON.stringify({query, variables})})
  4. //method: POST
  5. //content-type: application/json
  6. //body: json с query - строка и variables - объект с вложенными параметрами
  7. const gql = (url, query, variables) => fetch(url, {
  8. method: 'POST',
  9. headers: {'Content-Type': 'application/json'},
  10. body: JSON.stringify({query, variables}),
  11. })
  12. // .then(response => response.json())
  13. // .then(result => console.log(result))
  14. ;
  15. (async function() {
  16. let response = await gql("http://shop-roles.asmer.fs.a-level.com.ua/graphql", `query cats($q:String) {
  17. CategoryFind(query:$q){
  18. name goods{
  19. name images{
  20. url
  21. }
  22. }
  23. }
  24. }`, {q: "[{}]"}); //должно приехать { data: {CategoryFind: [........]}}
  25. let result = await response.json();
  26. console.log(result)
  27. })()
  28. }
  29. gqReq2()
  30. function gqReq2() {
  31. const getGQL = (url) =>
  32. (query, variables) => fetch(url, {
  33. //метод
  34. method: 'POST',
  35. headers: {
  36. //заголовок content-type
  37. "Content-Type": "application/json"
  38. },
  39. body: JSON.stringify({query, variables})
  40. //body с ключами query и variables
  41. }).then(res => res.json()).then(async (data) => {
  42. // console.log(data)
  43. if ('errors' in data) {
  44. throw new Error('ОШИБКА!!!!' + JSON.stringify(data.errors))
  45. // return Promise.reject(new Error('ОШИБКА')) // можно использовать в синхронной функции
  46. } else {
  47. return data.data[Object.keys(data.data)[0]]
  48. }
  49. //расковырять data, если все ок - отдать data.login или data.CategoryFindOne, или шо там еще
  50. //если есть errors, то выбросить исключение и тем самым зареджектить промис
  51. });
  52. (async function() {
  53. const gql = getGQL('http://shop-roles.asmer.fs.a-level.com.ua/graphql')
  54. console.log((await gql(`query cats($q:String) {
  55. CategoryFind(query:$q){
  56. name goods{
  57. name images{
  58. url
  59. }
  60. }
  61. }
  62. }`, {q: "[{}]"})))
  63. console.log((await gql(`
  64. mutation reg($login: String, $password: String) {
  65. UserUpsert(user: {login: $login, password: $password, nick: $login}) {
  66. _id
  67. login
  68. }
  69. }
  70. `, {login: 'tst', password: '123'})))
  71. console.log((await gql(`
  72. query NameForMe1($login:String, $password:String){
  73. login(login:$login, password:$password)
  74. }
  75. `, {login: 'tst', password: '123'})))
  76. })()
  77. }