WebService
==========
- Créer le vhost, voir le fichier VHOST pour les exemples
<VirtualHost *:80>
ServerName webservice.sd.dev
AddDefaultCharset utf-8
<IfModule mod_xsendfile.c>
XSendFile On
XSendFilePath /home/vhosts/webservice/shared
</IfModule>
DocumentRoot /home/vhosts/webservice/public
<Directory /home/vhosts/webservice/public/>
EnableSendfile Off
AllowOverride none
Require all granted
<Files ~ "^\.user.ini">
Order allow,deny
Deny from all
</Files>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/favicon.ico$ [OR]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
</IfModule>
</Directory>
<Directory /home/vhosts/webservice/public/assets/>
<IfModule mod_rewrite.c>
RewriteEngine Off
</IfModule>
</Directory>
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel error
ErrorLog ${APACHE_LOG_DIR}/webservice-error.log
CustomLog ${APACHE_LOG_DIR}/webservice-access.log combined
</VirtualHost>
- Installer les librairies avec composer
$ composer install
- Configurer l'application
La config (fichier application.ini) est à placer dans "application/configs/"
Exemple de la config dans "docs/config/application.ini" (Modifier selon les besoins)
- APPLICATION_ENV
Différent niveau peuvent être utilisé dans l'application pour gérer les erreurs et le comportement.
production
staging
development
testing
Cette variable est accessible dans PHP.
. mod_php
Add in <VirtualHost/>
SetEnv APPLICATION_ENV "development"
. php-fpm
Add a file in document root path (public/) a file .user.ini
env[APPLICATION_ENV] = "development"
See the .user.ini file
- Créer les repertoires de données nécessaires
[WORKSPACE]/data/webservice/
- cache
- logs
- sessions
- wsdl
- files
- greffes
Fonctionnement
==============
Obtenir les WSDL
Pour le service Entreprise
- En mode développement : http://hostname/entreprise/version?wsdl-auto
- Générer le WSDL : http://hostname/entreprise/version?wsdl-generate
- Utiliser le WSDL généré : http://hostname/entreprise/version?wsdl
Pour le service Interne
http://hostname/interne/version?wsdl
Pour les clients
http://hostname/clients/nom_du_client/version?wsdl
N.B : Le fichier WSDL est généré automatiquement en appelant
http://hostname/service?wsdl afin de ne pas provoquer d'erreur
après une mise en production
Pour définir le mode (vhost d'apache)
SetEnv APPLICATION_ENV "development"
SetEnv APPLICATION_ENV "production"
SetEnv APPLICATION_ENV "staging"
En appelant l'url http://hostname/service, le contoller de l'application,
"service" est automatiquement utiliser.
Tout ce qui est visible dans la class est utilisé par le controller et se
retrouve visible dans le service (wsdl, requête)
Si des fonctions ne doivent pas être rendu visible il faut donc les séparer
dans un autre controller utilisant une autre class.
Documentation des méthodes et ajout spécial
===========================================
La documentation est géneré en automatique.
Voici comment définir simplement la documentation d'une méthode
/**
* Retourne les informations identitaires de l'entreprise ou de l'établissement demandé
* @param string $key Siren de l'entreprise ou siret de l'établissement
* @return Identite
*/
public function test($key)
{
}
Attention ces informations servent aussi pour la structure du WSDL
Pour spécifier un lien vers un fichier ou pour générer un fichier depuis une
requête SQL à partir de la documentation du service.
Ajouter dans le docblock :
- Pour un fichier
@ref fichier:libellé:{nom_du_fichier.ext}
- Pour une requête SQL
@ref mysql:libellé:{nom_du_fichier.sql}
Les fichiers a télécharger sont à placer dans le répértoire public/fichier et
les fichiers sql dans public/sql
Pour spécifier des éléments de taille (non pris en compte sur le WSDL)
@xsd minLength=9
@xsd maxLength=15