mirror of
https://github.com/strapi/strapi.git
synced 2025-07-19 23:16:47 +00:00
Add guide to init a third party client
This commit is contained in:
parent
c51c4d723d
commit
928f73b565
@ -202,6 +202,7 @@ module.exports = {
|
|||||||
'/3.0.0-beta.x/guides/external-data',
|
'/3.0.0-beta.x/guides/external-data',
|
||||||
'/3.0.0-beta.x/guides/custom-data-response',
|
'/3.0.0-beta.x/guides/custom-data-response',
|
||||||
'/3.0.0-beta.x/guides/custom-admin',
|
'/3.0.0-beta.x/guides/custom-admin',
|
||||||
|
'/3.0.0-beta.x/guides/client',
|
||||||
'/3.0.0-beta.x/guides/draft',
|
'/3.0.0-beta.x/guides/draft',
|
||||||
'/3.0.0-beta.x/guides/slug',
|
'/3.0.0-beta.x/guides/slug',
|
||||||
'/3.0.0-beta.x/guides/webhooks',
|
'/3.0.0-beta.x/guides/webhooks',
|
||||||
|
159
docs/3.0.0-beta.x/guides/client.md
Normal file
159
docs/3.0.0-beta.x/guides/client.md
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
# Setup a third party client
|
||||||
|
|
||||||
|
This guide will explain how to setup a connection with a tiers client and use it everywhere in your code.
|
||||||
|
|
||||||
|
In our example we will use the GitHub Node.JS client [OctoKit REST.js](https://github.com/octokit/rest.js/).
|
||||||
|
|
||||||
|
This guide could also be used to setup an Axios client instance.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
First you will have to install the client node_module in your application by running one of the following command.
|
||||||
|
|
||||||
|
:::: tabs
|
||||||
|
|
||||||
|
::: tab yarn
|
||||||
|
`yarn add @octokit/rest`
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: tab npm
|
||||||
|
`npm install @octokit/rest`
|
||||||
|
:::
|
||||||
|
|
||||||
|
::::
|
||||||
|
|
||||||
|
## Create a hook
|
||||||
|
|
||||||
|
To init the client, we will use [Strapi hooks system](../concepts/hooks.md). Hooks let you add new features in your Strapi application.
|
||||||
|
|
||||||
|
Hooks are loaded one time, at the server start.
|
||||||
|
|
||||||
|
Lets create our GitHub hook.
|
||||||
|
|
||||||
|
**Path —** `./hooks/github/index.js`
|
||||||
|
|
||||||
|
```js
|
||||||
|
module.exports = strapi => {
|
||||||
|
const hook = {
|
||||||
|
initialize: async () => {
|
||||||
|
console.log('my hook is loaded');
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
return hook;
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
When the hook is created, we have to enable it to say to Strapi to use this hook.
|
||||||
|
|
||||||
|
**Path —** `./config/hook.json`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
...
|
||||||
|
"github": {
|
||||||
|
"enabled": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Now you can start your application, you should see a log `my hook is loaded` in your terminal.
|
||||||
|
|
||||||
|
## Initialize the client
|
||||||
|
|
||||||
|
First lets update the config file to add your [GitHub token](https://github.com/settings/tokens).
|
||||||
|
By following the [documentation](https://octokit.github.io/rest.js/#authentication) you will also find the way to use GitHub applications.
|
||||||
|
|
||||||
|
**Path —** `./config/hook.json`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
...
|
||||||
|
"github": {
|
||||||
|
"enabled": true,
|
||||||
|
"token": "bf78d4fc3c1767019870476d6d7cc8961383d80f"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Now we have to load the GitHub client.
|
||||||
|
|
||||||
|
**Path —** `./hooks/github/index.js`
|
||||||
|
|
||||||
|
```js
|
||||||
|
const GitHubAPI = require('@octokit/rest');
|
||||||
|
|
||||||
|
module.exports = strapi => {
|
||||||
|
const hook = {
|
||||||
|
initialize: async () => {
|
||||||
|
const { token } = strapi.config.hook.github;
|
||||||
|
|
||||||
|
strapi.github = new GitHubAPI({
|
||||||
|
userAgent: `${strapi.config.info.name} v${strapi.config.info.version}`,
|
||||||
|
auth: `token ${token}`,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
return hook;
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
And here it is.
|
||||||
|
|
||||||
|
You can now use `strapi.github` everywhere in your code to use the GitHub client.
|
||||||
|
|
||||||
|
To simply test if it works, lets update the `bootstrap.js` function to log your GitHub profile.
|
||||||
|
|
||||||
|
**Path —** `./config/functions/bootstrap.js`
|
||||||
|
|
||||||
|
```js
|
||||||
|
module.exports = async () => {
|
||||||
|
const data = await strapi.github.users.getAuthenticated();
|
||||||
|
console.log(data);
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
Restart your server and you should see your GitHub profile data.
|
||||||
|
|
||||||
|
## Configs by environment
|
||||||
|
|
||||||
|
You would probably want specific configurations for development and production environment.
|
||||||
|
|
||||||
|
To do so, we will update some configurations.
|
||||||
|
|
||||||
|
You have to cut your `github` configs from `./config/hook.json` to set them in `./config/environments/development.json`.
|
||||||
|
|
||||||
|
And in your GitHub hook, you will have to replace `strapi.config.hook.github` by `strapi.config.currentEnvironment.github` to access to the configs.
|
||||||
|
|
||||||
|
**Path —** `./config/environments/development.json`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"github": {
|
||||||
|
"enabled": true,
|
||||||
|
"token": "806506ab855a94e8608148315eeb39a44c29aee1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Path —** `./hooks/github/inde.js`
|
||||||
|
|
||||||
|
```js
|
||||||
|
const GitHubAPI = require('@octokit/rest');
|
||||||
|
|
||||||
|
module.exports = strapi => {
|
||||||
|
const hook = {
|
||||||
|
initialize: async () => {
|
||||||
|
const { token } = strapi.config.currentEnvironment.github;
|
||||||
|
|
||||||
|
strapi.github = new GitHubAPI({
|
||||||
|
userAgent: `${strapi.config.info.name} v${strapi.config.info.version}`,
|
||||||
|
auth: `token ${token}`,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
return hook;
|
||||||
|
};
|
||||||
|
```
|
Loading…
x
Reference in New Issue
Block a user