This library enables developers to quickly integrate with the VTEX IO APIs and create full fledged node services using VTEX IO.
For a complete example on using @vtex/api
, check out this app: https://github.com/vtex-apps/service-example
The most basic usage is to export a new Service()
with your route handlers:
// Import global types
import './globals'
import { Service } from '@vtex/api'
import { clients } from './clients'
import example from './handlers/example'
// Export a service that defines route handlers and client options.
export default new Service({
clients,
routes: {
example,
},
})
This allows you to define middlewares that receive a Context
param which contains all IO Clients in the clients
property:
export const example = async (ctx: Context, next: () => Promise<void>) => {
const {state: {code}, clients: {apps}} = ctx
console.log('Received code:', code)
const apps = await apps.listApps()
ctx.status = 200
ctx.body = apps
ctx.set('Cache-Control', 'private')
await next()
}
ctx.clients.apps
is an instance of Apps
.
- Install the dependencies:
yarn
- Watch for changes:
yarn watch
- Install the dependencies:
yarn
- Link this package:
yarn link
- Watch for changes:
yarn watch
- Move to the app that depends on the changes made on this package:
cd ../<your-app>/node
- Link this package to your app's node_modules:
yarn link @vtex/api
Now, when you get a workspace up and running for your app with vtex link
, you'll have this package linked as well.
When done developing, don't forget to unlink it from
<your-app>/node
:yarn unlink @vtex/api