Conectando a um serviço
View in EnglishThis content was migrated from the VTEX Learning Center and is no longer being actively maintained. For the most accurate and up-to-date information, please check the official documentation.
Introdução
Uma app de admin acaba perdendo o seu sentido se não puder consumir dados. Sendo assim, no último passo do curso, vamos aprender como conectar sua app de admin a um serviço e, em seguida, usá-lo no front-end da aplicação.
Atividade
- Comece adicionando os builders para serviço necessários:
/manifest.json
_11{_11 ..._11 "builders": {_11 "react": "3.x",_11 "messages": "1.x",_11 "docs": "0.x",_11 "admin": "0.x",_11+ "node": "6.x",_11+ "graphql": "1.x"_11 }_11}
- Crie uma pasta
graphql/e adicione um arquivo simplesschema.graphqlcom uma única query:
/graphql/schema.graphql
_10type Query {_10 helloworld: String_10}
- Crie uma pasta
node/e nela adicione umindex.tsque vai instanciar nosso serviço:
/node/index.ts
_11import { Service } from '@vtex/api'_11_11export default new Service({_11 graphql: {_11 resolvers: {_11 Query: {_11 helloworld: () => `Service number: ${Math.random()}`,_11 },_11 },_11 },_11})
Nosso serviço vai então, na query helloworld retornar um número aleatório.
- Na pasta
/nodepara que você consiga desenvolver bem localmente, será necessário umpackage.json, você pode adicionar um simples:
/node/package.json
_21{_21 "dependencies": {_21 "co-body": "^6.0.0",_21 "ramda": "^0.25.0"_21 },_21 "devDependencies": {_21 "@types/co-body": "^0.0.3",_21 "@types/jest": "^24.0.18",_21 "@types/node": "^12.0.0",_21 "@types/ramda": "types/npm-ramda#dist",_21 "@vtex/api": "6.36.2",_21 "@vtex/test-tools": "^1.0.0",_21 "tslint": "^5.14.0",_21 "tslint-config-vtex": "^2.1.0",_21 "typescript": "3.8.3"_21 },_21 "scripts": {_21 "lint": "tsc --noEmit --pretty && tslint -c tslint.json --fix './**/*.ts'"_21 },_21 "version": "0.0.7"_21}
- Na pasta
react/nós vamos precisar definir uma query para conseguir usar o resolver que definimos no serviço. Para fazer isso, crie uma pastagraphql/dentro da pastareact/e nesta pasta, crie umhelloworld.gqlcom:
/react/graphql/helloworld.gql:
_10query hello {_10 helloworld_10}
- Para finalizar, precisamos adicionar essa query ao nosso componente no
adminExample.ts
_20import React, { FC } from 'react'_20import { Layout, PageBlock } from 'vtex.styleguide'_20+import { useQuery } from 'react-apollo'_20_20+import helloworld from './graphql/helloworld.gql'_20_20const AdminExample: FC = () => {_20+ const { data } = useQuery(helloworld)_20_20 return (_20 <Layout>_20 <PageBlock title="Titulo" subtitle="Alguma explicação." variation="full">_20 <h1>Hello, World!</h1>_20+ <p>{data?.helloworld}</p>_20 </PageBlock>_20 </Layout>_20 )_20}_20_20export default AdminExample
O resultado deve ser:
