Paramétrage
Le connecteur est programmé pour fonctionner avec deux CMD Headless différents : WordPress et Directus. Pour configurer le CMS qui sera utilisé par le connecteur, il y a deux fichiers à modifier.
Environnement
Pour utiliser le connecteur, il faut renseigner les informations du CMS qui sera utilisé comme dans l'exemple ci-dessous. Il est possible de supprimer les éléments du CMS qui n'est pas utilisé.
# DIRECTUS DIRECTUS_URL=http://localhost:8055 DIRECTUS_KEY=key DIRECTUS_SOCIAL_NETWORK_PATH=/items/social_networks DIRECTUS_PAGE_PATH=/items/pages DIRECTUS_LANGUAGE_PATH=/items/languages DIRECTUS_CHANNEL_PATH=/items/channels DIRECTUS_FEATURE_PATH=/items/features DIRECTUS_ASSETS_PATH=/assets DIRECTUS_IMPORTANT_NEWS_PATH=/items/important_news DIRECTUS_CONTACT_US_PATH=/items/contact_us DIRECTUS_LOGIN_PATH=/items/login DIRECTUS_WIDGET_PATH=/items/widgets DIRECTUS_FIELDS=?fields[]=* DIRECTUS_FIELDS_TRANSLATIONS=,translations.* DIRECTUS_FIELDS_AUTHORIZATION=,authorization.* # WORDPRESS WORDPRESS_URL=http://localhost:9090/wp-json/wp/v2 WORDPRESS_ASSETS_PATH=http://localhost:9090/wp-content/uploads/ WORDPRESS_OPTIONS=?acf_format=standard&_fields=acf,id&per_page=100 WORDPRESS_SOCIAL_NETWORK_PATH=/social-network WORDPRESS_FEATURE_PATH=/features WORDPRESS_PAGE_PATH=/page-api WORDPRESS_IMPORTANT_NEWS_PATH=/important-news WORDPRESS_CONTACT_US_PATH=/contact-us WORDPRESS_LOGIN_PATH=/login WORDPRESS_CHANNEL_PATH=/channels WORDPRESS_WIDGET_PATH=/widgets WORDPRESS_LANGUAGE_PATH=/language
Modules
Dans le fichier module, il faut importer le module que l'on souhaite utiliser et le renseigner dans la partie imports comme ci-dessous indiqué par les chevrons. Il faudra également modifier le module qui s'occupe des assets.
@Module({
imports: [
GraphQLModule.forRoot<ApolloDriverConfig>({
driver: ApolloDriver,
autoSchemaFile: join(process.cwd(), 'src/schema.gpl'),
sortSchema: true,
}),
ConfigModule.forRoot({ envFilePath: '.env' }),
<<WordpressModule>>,
],
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(<<WordpressImageMiddleware>>).forRoutes('assets');
}
}
Paramètres d'appels
URL en méthode POST
<host>/graphql
- host : adresse du serveur
Header de la requête :
{
"Content-Type": application/json
}
Body des requêtes :
query {
channels{
id
code
routerLink
icon
color
filterable
translations{
languagesCode
label
}
}
}
query {
contactUs{
id
to
icon
translations{
languagesCode
content
title
}
}
}
query {
features(status: "published") {
id
description
icon
iconSvgDark
iconSvgLight
link
menu
position
routerLink
ssoService
status
type
translations{
languagesCode
searchKeywords
shortTitle
title
}
authorization {
roles
authorization
}
settingsByRole{
position
role
}
}
}
query {
pages(status: "published") {
id
status
icon
iconSvgDark
iconSvgLight
position
statisticName
translations {
languagesCode
content
title
}
}
}
query {
widgets(status: "published") {
id
status
description
widget
iconSvgDark
iconSvgLight
icon
link
position
ssoService
statisticName
routerLink
color
type
translations{
languagesCode
content
title
}
authorization {
roles
authorization
}
settingsByRole{
position
role
}
}
}
query {
socialNetworks{
id
icon
link
title
}
}
query {
login{
id
translations {
languagesCode
connexionText
notAuthenticatedText
}
}
}
query {
languages{
code
direction
name
}
}
query {
importantNews(status: "published"){
id
status
image
link
color
position
statisticName
translations{
languagesCode
content
buttonLabel
title
}
authorization {
roles
authorization
}
}
}
URL en méthode GET
<host>/assets/<image-name>
- host : adresse du serveur
- image-name : nom de l'image
Format de retour
Format attendu
- Code HTTP 200 : si tout s'est bien passé
Cas d'erreur
- Erreur HTTP 4xx ou 5xx : En cas de problème ou erreur
Exemple
<host>/graphql
query {
languages{
code
direction
name
}
}
{
"data": {
"languages": [
{
"code": "fr",
"direction": "ltr",
"name": "Français"
},
{
"code": "en",
"direction": "ltr",
"name": "English"
}
]
}
}