Je suis relativement nouveau en termes de Java compétences en développement Web. J'ai un projet qui, je pense, ferait un bon candidat pour un service RESTful d'après le peu que je comprends des API. J'essaie de entrer dans les détails de la façon dont cela est censé être structuré, mais sans vraiment aller nulle part en termes de recherches Google et de lecture du matériel que j'ai déjà. J'espère que ce message donnera une validation et/ou une redirection en termes de mon connaissances et hypothèses sur ce sujet.
Mon hypothèse actuelle est que mon service RESTful aura la structure suivante:
@ResponseBody
pour diriger/gérer l'URL et les actions sur la façon dont les données sont gérées via les verbes HTTP ( http://mysite.com/computers/Dell peut être GET
demande avec Word "Dell" dans l'URL étant un paramètre qui renverra un tableau JSON d'informations sur les ordinateurs Dell).En supposant maintenant que ce qui précède est correct, j'aurais (à un niveau très basique) un service RESTful que toute application peut utiliser pour consommer et utiliser des données.
Alors disons que j'ai ensuite mon application web. Supposons que je crée une application Web sur les informations sur le matériel informatique et que j'utilise Spring pour créer cette application Web. Voici mes hypothèses:
ModelAndView
ou quelque chose du genre pour "parler" au contrôleur du service RESTful, obtenir les données transmises, retransmettre ces données à la vue (Javascript, JSP, etc ...) pour les afficher.Suis-je sur la bonne voie, ici? Je comprends qu'il existe également un aspect d'authentification dans les services RESTful, mais je n'y suis pas encore conceptuellement (et mon projet va être utilisé dans un réseau privé, la sécurité n'est donc pas une priorité à ce stade).
Toute perspicacité, critique, connaissance, rétroaction ou clarification est grandement appréciée.
Voici l'un de mes exemples préférés de structure pour votre application de repos de printemps.
Il y en a beaucoup, la recherche Google vous le montrera. Personnellement, j'aime Maven avec Spring. Cela fonctionne simplement pour la structure de projet ci-dessus.
Notez également que si vous utilisez maven, il existe un module parent qui regroupe tous les modules décrits dans la section 1. Tous les modules à puces correspondent également aux modules maven.
Puisque vous utilisez REST, je vous recommande fortement de ne PAS utiliser JSP comme vue. Vous pouvez utiliser le HTML5 + Javascript ordinaire ou un cadre populaire comme AngularJS comme vue.
Si vous insistez pour utiliser JSP, vous devrez introduire une autre guerre (application web) qui a des contrôleurs et des JSP. Le contrôleur obtiendra les données (normalement au format Json/xml), puis les analysera dans vos modèles (POJO) afin que votre JSP puisse les obtenir de votre contrôleur et faire l'affichage. Publier des données depuis JSP est l'inverse, j'ai omis ici.
Il est loin d'être un guide complet car ce sujet est assez vaste et dépend fortement de vos besoins spécifiques, mais les termes inclus ici vous suffisent pour faire des recherches supplémentaires (Google, c'est le cas). J'espère que cela vous donnera quelques idées sur la façon d'aborder.
Tout en étant d'accord avec la plupart des réponses de @ Minjun.Y, je pense que j'opterais pour une approche légèrement différente de la couche REST et page Web. D'après ma lecture de votre question, je pense que vous veulent exposer à la fois une interface Web et une interface REST au monde extérieur. Il y a peu à gagner en lisant les POJO de la base de données, en transformant les données en JSON, puis de nouveau en POJO pour consommation des JSP.
Je préférerais que la couche de service fasse tout le travail réel et en ajoutant des couches de "présentation" distinctes pour l'application Web (JSP) et le contrôleur REST. Ce sont des contrôleurs séparés, dans lesquels le Sinon, optez pour un service REST et créez toute la logique de présentation côté client comme indiqué dans la réponse précédente.
De plus, je ne suis pas un grand fan des modules Maven. La façon dont notre Java implémenterait votre projet serait de créer des versions régulières de la couche de service, puis de rendre les couches de présentation dépendantes de la dernière version. Il y a de la place pour une discussion à ce sujet, mais cela Nous aurions certainement l'interface Web et les interfaces REST en tant que projets Maven distincts, car ils vivent normalement dans des fichiers .war différents et nécessitent donc un déploiement séparé.
BTW, je renforcerais la nécessité de se familiariser avec les outils de gestion de la construction et des dépendances. Une fois que votre projet atteint une taille raisonnable, vous en avez besoin. Des outils gratuits comme Maven, Jenkins et Nexus rendent la gestion des versions moins problématique.