Merci Ombre !
Je suis content d'avoir un peu de retours autre que l'interface
Voici ce que j'en pense :
1) Pourquoi le backend en C++.
La vrai raison, c'est que moi et Daminetreg, on connait très bien le C++ et qu'on est des extrémiste.
La question des performances est un corollaire plutôt anecdotique en toute franchise ^_^.
2) Concaténer les requêtes pour en faire moins.
Oui bien entendu, c'est prévu à moyen terme.
On fera cette optimisation dès qu'on sera un peu plus avancé.
On avance sur les fonctionnalités en premier lieu, quitte à faire les optimisations ensuite.
L'idéal serait de pouvoir faire une unique requète.
3) Systeme de "pages/réponse partielle"
Oui pourquoi pas quand on aura des milliers de topics et/ou qu'on utilisera des réponse partielles.
4) Pas de tableau dans les JSON → utiliser des objets.
Mouais, seulement si on fait de la pagination (#3).
Mais je n'ai pas compris l'avantage d'un objet lorsque je veux préserver l'ordre d'une séquence d'éléments.
5) Renommer certaines routes.
Pourquoi pas, tu fais ressortir l'encapsulation message → topic → categorie.
J'aimerais quand même garder des chemin assez court.
On peut pour certain chemins rajouter à la fin du texte non utilisé:
Exemple :
http://test.lecbna.org:8080/api/forum/topics/1/2/Mon-super-topicJ'hésite en ce moment, à indexer les messages par seulement un entier (message_id) au lieu de 3 (category_id, topic_id, message_id)
et rajouter un niveau d'indirection dans les categories et les topics qui contiendraient une liste de topics et une liste de messages.
Mais les catégories nous permettent d'instaurer des droits (lecture/écriture).
C'est utile pour l'indexation sur les search engines.
Pour info, voici l'API actuelle :
// categories
router.get (R"(/forum/categories/(\d+)/?)", &REST_server::get_category);
router.get (R"(/forum/categories(/.*)?)", &REST_server::get_categories_list);
router.post(R"(/forum/categories/?)", &REST_server::post_category);
//router.del (R"(/forum/categories/(\d+)/)", &REST_server::del_category);
// topics
router.get (R"(/forum/topics/(\d+)/(\d+)(/.*)?)", &REST_server::get_topic);
router.get (R"(/forum/topics/(\d+)(/.*)?)", &REST_server::get_topic_list);
router.post (R"(/forum/topics/(\d+))", &REST_server::post_topic);
//router.del (R"(/forum/topics/(\d+)/(\d+)/)", &REST_server::del_topic);
// message
router.get (R"(/forum/messages/(\d+)/(\d+)/(\d+))", &REST_server::get_message);
router.get (R"(/forum/messages/(\d+)/(\d+)(/.*)?)", &REST_server::get_message_list);
router.post (R"(/forum/messages/(\d+)/(\d+))", &REST_server::post_message);
router.del (R"(/forum/messages/(\d+)/(\d+)/(\d+))", &REST_server::del_message);
router.post (R"(/forum/messages/(\d+)/(\d+)/(\d+))", &REST_server::edit_message);
// unread
router.get (R"(/forum/unread/?)", &REST_server::get_unread);
router.get (R"(/forum/unread/number)", &REST_server::get_unread_number);
// users
router.get(R"(/forum/users/(\d+)/?)", &REST_server::get_user);
router.get(R"(/forum/users(/.*)?)", &REST_server::get_users_list);
// groups
router.get(R"(/forum/groups/(\d+)/?)", &REST_server::get_group);
router.get(R"(/forum/groups(/.*)?)", &REST_server::get_groups_list);
// connection / inscription
router.post(R"(/connection)", &REST_server::connection);
router.post(R"(/inscription)", &REST_server::inscription);
router.post(R"(/disconnection)", &REST_server::disconnection);
// unimplemented methods */
// avatar
router.post(R"(/avatar)", &REST_server::avatar);
[/code]
Si tu es intéressé, ça me plairait bien d'avoir quelqu'un avec qui bosser.
On utilise C++ pour le backend, javascript/Angular2 pour le front-end et cmake/git/gitlab pour la gestion de projet.
Si cela te dit (même si c'est juste pour jeter un petit coup d'oeil à la source) envoie nous un message et on t'inscrit sur le projet.