Avelow, l'API rest pour AngularJs.

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour à tout le monde !

J'ai posté exactement le même message sur le forum d'un site au design orange et sur celui d'un site qui parle de développement, de design, de graphisme (mais pas d'art) mais je souhaite aussi partager mon projet avec vous.

Je suis Alexis, étudiant en 3ème de license de maths et d'informatiques à Angers à partir de septembre. Je développe en amateur et je me forme sur les langages web depuis plus de 7 ans grâce à plusieurs sites communautaires dont le SdZ devenu openclassrooms et grafikart. Je ne suis pas là pour vous raconter ma vie mais pour vous présenter un projet sur lequel j'ai travaillé depuis le début de l'année et qui me tient à coeur.

Je suis heureux de vous présenter la v1.0 d'Avelow.

Avelow, tout est plus simple

Avelow est un framework 100% français permettant le développement rapide d'application web. Pour le back-end, il est développé en PHP et utilise Slim comme base pour le routing. Pour le front-end, AngularJs est utilisé pour simplifier la communication avec le back-end.

En savoir plus sur le projet

Après avoir découvert AngularJs, j'ai voulu l'essayer. Le problème est la gestion des données et de leur stockage.

Comment les stocker, les modifier, les récupérer, les supprimer ?

Après quelques recheches, une API rest semble idéale.

Mais où trouver une API rest simple à mettre en place et rapide à configurer ?

Nul part. Symfony avec un bundle externe, trop compliqué pour l'amateur que je suis. Les autres framework, pareil et en plus, il faut créer toutes les requêtes pour accèder à la base de données pour chaque entité.

J'ai donc commencé à développer mon petit framework maison. Et en 5 mois, je suis passé du petit framework maison à un framework rapide, simple et complet.

Généralités et avancement

Aujourd'hui, Avelow possède différentes fonctionnalités : - Génération des fichiers de base pour la déclaration et la configuration d'une nouvelle entité via le terminal. - Génération de la base de données via le terminal. - Un gestion des entités entièrement automatisée une fois la configuration terminée. - Un module AngularJs permettant de communiqué avec aisance entre le front-end et le back-end. - Un site officiel avec une documentation complète.

Objectif

Le framework est open source et gratuit. L'objectif principal est de proposer le framework à d'autres développeurs pour qu'ils l'essayent, le testent, l'adoptent et l'améliorent !

Le projet et son originalité

Un framework 100% made in France avec un documentation écrite entièrement en français et le tout gratuitement et pour tout le monde !

Le petit plus

Avelow.fr | Github

Un mini-tp pour se faire la main La documentation, c'est cool

Édité par Avelow

+2 -0
Auteur du sujet

Je suis en train de travailler sur un portfolio/book pour un ami, je le mettrai peut être en exemple si ça ne dérange pas mon ami, sinon je me ferai une petite to-do liste, c'est simple et efficace, merci pour l'idée :)

+0 -0
Auteur du sujet

Je suis en train de travailler avec mon framework pour un projet, et je rencontre encore des petites erreurs que je corrige au fur et à mesure, pour l'instant il s'agit plus d'une beta d'une framework, d'ici un ou deux mois, il devrait être beaucoup plus fonctionnel !

+0 -0

En gros c'est du scaffolding, à la fois côté serveur (génération d'une API REST en PHP) et côté client (génération de contrôleur + services + directives Angular) ?

Je suis pas complètement sûr d'avoir bien compris. Mais si c'est le cas c'est une chouette idée :)

Pourquoi la ligne de commande plutôt que de reposer sur un truc réutilisable (rejouable par l'utilisateur facilement, dans un autre contexte ?) JSON, XML, … ?

Édité par Javier

Happiness is a warm puppy

+1 -0
Auteur du sujet

Salut, je ne connais pas le concept scaffolding, mais en gros côté serveur, après avoir définies et configurées les entités tout fonctionne tout seul, et côté client le module fourni avec permet d'interagir avec l'api sans avoir à réfléchir !

Pourquoi la ligne de commande plutôt que de reposer sur un truc réutilisable (rejouable par l'utilisateur facilement, dans un autre contexte ?) JSON, XML, … ?

Je n'ai pas encore assez de connaissance pour pouvoir mettre autre chose ! J'ai choisi la ligne de commande (car c'est ce que j'utilise) et j'ai trouvé une solution (plus ou moins propre) de le mettre en place.

+0 -0

Salut, je ne connais pas le concept scaffolding,

https://fr.wikipedia.org/wiki/%C3%89chafaudage_(programmation)

Beaucoup plus complet en Anglais : https://en.wikipedia.org/wiki/Scaffold_(programming)

C'est Ruby on Rails qui a un peu démocratisé le concept, à l'époque (peut-être toujours vrai ?) tu tapais :

rails create model Product dans la console et il te créait une classe Ruby, des tests pour cette classe, etc.

Aujourd'hui avec Grails (et RoR le fait aussi j'imagine), le scaffolding génère le model (reflet de la BDD) des scripts de migration (pour créer la table dans la BDD) un contrôleur REST pour accéder directement au contenu de la BDD via une API, etc.

Donc c'est pas nouveau mais c'est sympa (je pense, je ne connais pas du tout) d'en disposer en PHP.

Par contre générer le code front qui va bien j'avais rarement trop vu ça, c'est pour ça que j'aimerais mieux comprendre (plus que "waouh ça fait tout tout seul"). Et le site n'a pas de doc "technique" si je puis dire.

après avoir définies et configurées les entités tout fonctionne tout seul, et côté client le module fourni avec permet d'interagir avec l'api sans avoir à réfléchir !

Euh, c'est pas très clair concret :\

Édité par Javier

Happiness is a warm puppy

+0 -0
Auteur du sujet

En gros le module angularjs à différents services qui fonctionne de pair avec l'api.

Concrètement de ton controller avec ce code :

1
2
3
4
awfEntity.getListEntity('Album', {param: 'WHERE deleted = 0', free: false, withCritic: true, withJoin: true, withJoinLevel: 2})
            .then(function(data){
                $scope.albums = data;
            });

Tu récupères dans la base de données, toutes les albums qui ne sont pas supprimés, en prenant tous les champs et en prenant les entités liées sur deux niveaux (les photos liées à l'album et les images liées au photos qui sont liées à l'album…). En même temps, si une erreur est lancée par l'api, l'erreur est affichée automatique grâce au service awfFlash qui gère les messages flash grâce à un simple :

1
awfFlash.add('error', 'le message');

(AngularJs possède une directive ngMessage que j'ai découvert après avoir fait ma petite directive et qui permet surement de faire la même chose que awfFlash (je ne me suis pas renseigné plus que ça))

Après j'attribue les albums à ma variable $scope.albums.

Voilà un exemple simple mais qui permet de se faciliter la vie. La même chose existe pour la suppression, l'ajout et la mise à jour d'entité (avec des petits changements dans les paramètres).

Édité par Avelow

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte