Implémentation de l'application Logic LayerDans toute la solution, la partie la plus simple est la mise en œuvre de la couche de logique d'application. Il est trivial et est illustré par le code suivant Python: bat en cours (req, cache, urlComponents): req.content_type = configuration.Atom.mimeType conn = MySQLdb.connect (host = configuration.Database.server, user = configuration.Database.user, passwd = configuration.Database.password, db = configuration.Database.db) curseur = conn.cursor () cursor.execute ( "SELECT * from entrées de commandes par desc post_date") row = cursor.fetchone () generateHeader (req, row) generateEntry (req, row) row = cursor.fetchmany (configuration.Blog.entryCount - 1) pour l'entrée dans la rangée: generateEntry (req, entrée) generateFooter (req) Ne soyez pas trop excités par la simplicité du code, comme le code fournit une infrastructure de méthodes qui sont appelées. La méthode illustre ce qu'est le service AWeb fait pour la plupart, qui est d'accepter des données, un processus, et il persiste. Vous aurez parfois en œuvre des algorithmes qui effectuent un certain type de calcul. Pendant le traitement, les règles métier sont appliqués qui traitent les données envoyées et reçues. S'agissant de la portée de cette solution, les données sont poussés et tirés avec très peu d'entre-deux de traitement. Un processus externe entraîne la logique d'application, qui dans le cas de la solution est un navigateur. La logique applicative est déclenché par un certain nombre de demandes qui sont définies en utilisant des URL. Il ya d'autres façons de créer des services Web en utilisant d'autres technologies, mais de traiter cet article est d'utiliser Representational State Transfer (REST). Utilisation de REST passe par la conception des URL et utilisant le protocole HTTP. Du point de vue du client Ajax, REST est un protocole parfait. On commence le processus de conception d'applications en corrélant ce que le code source de l'échantillon est le référencement. Le nom de la fonction dans le code source de l'échantillon est à jour, et le dernier nentrées de blog sont retournés. Lorsque vous utilisez un lecteur de blog ou d'un client Ajax, vous voulez voir les entrées de blog actuel, donc l'approche la plus simple est d'associer l'URL http://myserver.com/ à la fonction actuelle. Ignorant l'exactitude de l'URL pour l'instant (je discuter de cela dans la section suivante), une question pertinente est de savoir comment connaître au serveur de contre-référence le Web avec une fonctionnalité spécifique? Par défaut, quand un serveur HTTP le processeur exécute Web , l'URL est associée à un fichier. Si la demande a été [http://myserver.com] / dir / fichier.html, puis le serveur HTTP tente de trouver le fichier [répertoire de base] / dir / fichier.html. Si le fichier est trouvé, le processeur extension du fichier est chargé, ce qui dans le cas de. Html se trouve être un processeur de fichiers statiques. (Si l'extension est. Php ou. Aspx, puis le code PHP ou les processeurs ASP.NET sont exécutées et de générer un contenu basé sur les instructions dans le fichier.) Du point de vue reste, ce n'est pas la bonne URL algorithme de processeur. Il est un facile algorithme, mais il est l'algorithme de tort, au moins dans la perspective de repos. Understanding Why We Want REST Du point de vue de REST, toutes les URL représentent des ressources sur le côté serveur, mais pendant un fichier est une ressource, il n'est pas une ressource dans la perspective de la demande. Il s'agit d'une très grande différence qu'il faut comprendre: les URLs de repos sont l'application des ressources spécifiques. En utilisant une application de ressources signifie que vous exposez fonctionnalité basée sur la logique métier, pas la technologie. Utilisation de repos, vous pouvez séparer les ressources de la mise en œuvre, tout comme l'interface ou de contrat-Driven Development. Afin d'illustrer la séparation de la ressource de l'application, considérons le code C # suivant: interface IBase (void method ();) Implementation1 classe: IBase (public void Method () ()) Implementation2 classe: IBase (public void Method () ())
L'interface IBase définit une méthode et qui est mis en œuvre par deux classes, Implementation1 et Implementation2. Ce processus est appelé interface-Driven Development, Parce que lorsque le client utilise une mise en œuvre, le client n'utilise pas l'exécution réelle mais l'interface de l'application, comme le montre le code source suivant: fabrique de classe (public static IBase Instancier () (return Implementation1 new ();)) class UseIt (public void Method () (obj = IBase Factory.Instantiate (); / / ...)) Dans le code source exemple, la classe Factory a une méthode statique, instancier, qui crée une instance de IBase par instanciation Implementation1. Dans la classe UseIt.Method, une instance de IBase est instancié en appelant la méthode Factory.Instantiate. La classe UseIt ne sait pas si Implementation1 ou Implementation2 est instancié, et il utilise l'interface tels que définis par IBase, attendant les méthodes d'interface à mettre en œuvre correctement. Lors de l'utilisation des langages dynamiques, vous utilisez tapant canard, et les contrats de résultats définis dans la fonctionnalité implicite . Let's concernent l'interface axée sur le développement vers des URL et séparer les ressources de la représentation. La ressource est l'interface, et la représentation est la mise en œuvre. Actuellement, directement la plupart des implémentations des technologies du Web lient ensemble les ressources et la représentation ou l'utilisation, selon le http://mydomain.com/item.aspx URL et http://mydomain.com/item.jsp illustrer. Les liaisons directes sont les. aspx et extensions. jsp, et l'interface appropriée définie URL aurait été http://mydomain.com/item. Ironiquement, toutes les technologies Web en œuvre la séparation des ressources de la représentation pour l'URL racine /, comme illustré par le texte suivant HTTP conversation. (Notez que la conversation a été écourtée à des fins d'explication.) DemandeGET / HTTP/1.1 Host: 192.168.1.242:8100 User-Agent: Mozilla/5.0 (compatible; PPC Mac OS X Mach-O; EN-US; rv: 1.7.8) Gecko/20050511 RéponseHTTP/1.1 200 OK Server: Apache/2.0.53 (Ubuntu) PHP/4.3.10-10ubuntu4 Le flux d'exécution d'un processeur Web REST est simple en ce que, afin de déterminer quel code utilisateur à exécuter, nous disséquer tout simplement l'URL. Sur la base de la structure de l'URL, le serveur approprié gestionnaire de code côté est appelée. Si le client appelle l'URL / blog / entries / courant, l'URL sous forme de jeton est blog, entrées, et à jour. Dans le cas du logiciel de blog, le gestionnaire Python a besoin d'au moins trois morceaux de l'URL qui sont traduites dans l'appel Python [module namespace]. [Module]. [Fonction]. L'URL appelé à partir du client est ensuite traduit en blog.enteries.current (). Les morceaux URL après les trois premiers morceaux sont passés à la fonction appelée pour affiner les informations requises. La règle d'exiger au moins trois morceaux d'URL est purement spécifiques à mon cadre gestionnaire Python. Votre cadre pourriez avoir besoin de deux ou cinq ans, ou quel que soit le nombre de pièces URL s'agit d'un numéro arbitraire. Dans l'exemple de logiciel de blog, l'algorithme utilisé pour la Croix-référencer l'URL du code personnalisé utilisé Convention par rapport aux techniques de configuration. Pourtant, il n'y a rien de mal à utiliser un tableau de conversion de renvoi de certaines pièces de l'URL avec un morceau de fonctionnalités personnalisées. Encore une fois, comment vous renvoi les morceaux de la fonctionnalité URL personnalisée est à vous. Lorsque la mise en œuvre vos propres REST processeur URL, la mise en œuvre réelle varie en fonction de la technologie utilisée. Il n'ya pas de thème commun, mais il ya deux façons de mettre en oeuvre un processeur REST Web: • Trouver un moyen d'associer une URL de base, avec un gestionnaire spécifique. Par exemple, j'ai tendance à utiliser des services comme une base pour tous les services Web my. Le serveur doit soutenir l'idée que chaque fois que l'URL demandée commence avec / services, un gestionnaire spécifique est appelée. Le gestionnaire spécifique, appelé se trouve le reste URL processeur qui fait ensuite l'appel gestionnaire. • Si vous ne pouvez pas associer un gestionnaire de base pour une URL de base, alors vous devez écrire un filtre HTTP. La différence entre un filtre HTTP et un gestionnaire HTTP est un filtre qui est appelée avant un gestionnaire. L'idée de filtres HTTP est de permettre code d'utilisateur à effectuer certaines des étapes communes à toutes les demandes. Un exemple courant est l'authentification. L'utilisation d'un filtre HTTP, vous avez la possibilité de définir quel gestionnaire est appelé. Dans le contexte du processeur Web REST, le processeur serait incorporé en tant que dernière étape après que tous les autres filtres sont exécutés. Elle est la dernière étape parce que vous voulez des mesures telles que l'authentification à exécuter sur l'URL demandée, et non l'URL de redirection exécution. Lors de l'implémentation de votre processeur Web REST, vous devez vous rappeler que seule l'URL détermine quelle fonctionnalité est appelée. Vous ne devez pas utiliser un cookie HTTP dans le cadre de votre décision. Comme il est indiqué plus loin dans cet article, en utilisant les cookies HTTP de décider quelle fonctionnalité à exécuter est très mauvais design. S'agissant de la portée de cette solution, c'est tout ce que je vais étudier ce qui concerne le processeur REST URL. Mettre en œuvre les URLEn supposant que vous avez mis votre propre processeur Web REST, la prochaine étape est de définir les URL utilisées. Dans cette section, je décris les URL utilisées dans l'application de blog et de les expliquer de telle sorte que l'explication peut être utilisé dans une nature générale. Pour l'ensemble de mes URL, il existe un minimum de trois pièces, et ce qui est particulier au processeur Web REST j'utilise ne pense pas que vous devez utiliser le même nombre de pièces. Les deux URL de base sont / blog et / services blog /. Vous avez besoin de ces deux URL de base parce que vous êtes desservant deux différents types de contenus: fichiers HTML statiques et le contenu Web service. En théorie, vous pouvez utiliser une seule URL de base et d'avoir le service Web génère tout, mais je me méfie de le faire parce que cela complique la mise en œuvre. Portez votre regard en arrière et réfléchir à la raison d'avoir une URL unique complique la mise en œuvre. Lors de l'implémentation d'une application Ajax SOA, vous disposez d'un codeur client et un codeur serveur. Le codeur client ne fait pas toute la programmation du serveur et ne veulent pas, il veut mettre l'accent sur le côté client de choses. Ainsi, le client-programmeur autre doit être capable de faire tout ce qu'il ou elle veut avec les fichiers statiques servis par un serveur HTTP. Si le programmeur a besoin de services AWeb de servir des fichiers statiques, puis il ou elle serait dépendant du programmeur serveur, et que la dépendance n'est pas désiré. En ayant deux adresses URL de base, le programmeur client peut faire ce qu'il ou elle juge appropriée, et le programmeur serveur peut faire ce qu'il ou elle le juge approprié, indépendantes l'une de l'autre. Note Il n'ya aucune raison que vous pourriez ne pas avoir une URL de base tels que / blog et puis subdiviser cet espace de nom de base de / blog / statique et / services / Blog. Le point à retenir est que vous disposez de deux espaces de noms URL: une pour le côté client et une pour le côté serveur. Parce que je utiliser mod_python pour le côté serveur et Apache HTTPD pour le contenu statique, il est logique de mes services Web à tous Python fondée. Ainsi, j'ai un gestionnaire de base de services Web et services Web spécifiques, tels que le logiciel de blog, tous mis en œuvre comme un espace de noms Python. Le client de base-URL côté pour toutes les applications est /, et le serveur Web de base de côté pour toutes les applications est / services. Avec d'autres architectures comme ASP.NET, l'URL de base devrait être / blog, et puis cette URL pourrait être encore subdivisé. Je ne vais pas mettre l'accent sur le client-URLs côté, parce qu'ils sont poussés par les URL de service Web pour la portée de l'application de blog. Par exemple, si vous avez eu l'URL d'entrée / services/blog/entries/archive/2006, il y aurait un fichier statique approprié URL / blog/entries/archive/2006. Avant d'expliquer la nature de l'URL, passons en revue les quatre communes verbes HTTP. Normalement, on utilise deux verbes HTTP GET et POST, souvent pour le même but. Par exemple, un formulaire HTML pour pouvoir envoyer ses données en utilisant soit la méthode GET ou POST. Du point de vue reste, c'est la pratique est mauvais d'utiliser GET pour envoyer des données vers le serveur. J'explique comment utiliser chaque verbe HTTP dans la liste suivante. La meilleure façon de comprendre les verbes individuelle est de les considérer comme des instructions tout comme les commandes SQL. La différence entre les verbes HTTP et les commandes SQL est que SQL manipule des tables et des lignes, et HTTP manipule les ressources associées à des URL. • SUPPRIMER (Équivalent SQL supprimer de): Rarement utilisé verbe qui est utilisé pour supprimer une ressource sur le côté serveur. Par exemple, si le verbe DELETE est utilisé pour l'URL / services / blog / archive / entrées, le résultat est que toutes les entrées de blog sur le serveur sont supprimés. Si l'URL comporte des paramètres de requête qui lui est associé (par exemple, symbole = Dell & value = 23), alors toutes les entrées qui correspondent aux paramètres de requête sont supprimés. Dans SQL-parler (et en termes de commande de suppression), les paramètres de requête SQL où sont les paramètres. • EEG (Équivalent SQL Sélectionnez): Utilise très souvent un verbe qui est utilisé pour récupérer du contenu à partir du serveur. L'URL spécifiée récupère les ressources associées à l'URL. S'il ya des paramètres de requête, une sélection d'articles associé à l'URL qui correspondent aux paramètres de requête est effectuée. Dans SQL-dire les paramètres de requête où sont les paramètres associés à l'instruction SELECT. • POST (L'équivalent des procédures stockées SQL): Utilise très souvent un verbe qui est utilisé pour envoyer des données vers le serveur. Il est important d'envisager un HTTP POST comme une procédure stockée. Les choses deviennent drôles avec un HTTP POST en interprétant le rôle de l'URL. On pourrait dire que l'URL définit la ressource qui est manipulée, et les paramètres définissent la façon de manipuler les ressources, mais ce n'est pas la nature d'une procédure stockée SQL. Le nom de la procédure stockée n'a aucune incidence sur les tables sont manipulées. Donc, une autre vue du poste pourrait être de définir une ressource qui manipule les autres ressources, et dont les ressources sont manipulés dépend de la mise en œuvre d'un HTTP POST. Choisissez quelle définition du sens pour vous. Je vois un message HTTP pour être à la fois trop générales et trop spécifiques pour clouer à une seule idée. Je choisis personnellement la première solution, dont l'URL définit la ressource à manipuler, et qui algorithme utilisé pour manipuler la ressource dépend des paramètres. Un HTTP POST peut produire des données même si elle n'est généralement pas utilisée. Dans SQL-dire, des procédures stockées peuvent générer des résultats, même si pour la plupart, vous devez utiliser la commande select. • Mettre (Équivalent SQL insert): Rarement utilisé verbe qui est utilisé pour remplacer le contenu d'une ressource. Si la ressource associée à l'URL n'existe pas, alors il est créé. Les URL utilisées par l'application sont décrits dans les sections qui suivent. / services / blog / entries / current Plus précisément, cette URL représente la dernière n les entrées d'un blog. Avec le passage du temps, le dernier nentrées changer et vous pouvez utiliser une URL unique pour référencer les informations les plus récentes et les plus grands. Dans un sens abstrait, l'URL représente une vue sur certaines données. Le problème que vous aurez dans votre application est que les gens veulent une URL unique qu'ils peuvent utiliser jusqu'à la fin des temps. Par exemple, en remontant à l'exemple de blog, si le mois est 06, le jour est 07, et l'année est 2006, puis à obtenir les dernières entrées et le plus grand blog, vous n'avez qu'à faire référence à l'année appropriée, mois et jour URL. Le problème est que personne ne voudrait le faire, car il est trop compliqué et nécessite une connaissance de la façon dont les données sont organisées. Une autre façon d'organiser les entrées de blogue est d'utiliser des numéros supplémentaires ou des valeurs de long qui comptent les secondes depuis 1970. En ayant une "vue" URL, vous devez créer une référence à des données organisées par un algorithme intégré Serverside. Le serveur algorithme de côté n'est pas évidente pour l'utilisateur, et il ne doit pas l'être. Soyez très prudent de laisser les paramètres de requête pour sélectionner des données de la vue. Le but de l'affichage Web est de fournir un outil facile à mémoriser et-URL utilisation. Permettre à des paramètres de requête avec une URL de vue est ridicule parce que le même résultat peut être obtenu en utilisant une ressource Web, comme vous allez le voir bientôt. Afficher les URL pour la plupart n'acceptent que HTTP GET. Afficher les URL ne doit pas accepter un PUT HTTP ou un DELETE HTTP, car les données récupérées sont une référence à une autre URL. Si vous voulez soutenir un PUT HTTP ou DELETE sur une URL HTTP de vue, vous avez besoin de supprimer ou de remplacer la logique associée à l'URL, et pas les données. Il est plus difficile de déterminer si une URL de vue devrait accepter un HTTP POST. On pourrait faire valoir qu'une des URL HTTP POST vue n'a pas de sens parce que, pour la plupart, vous ne pouvez pas actualiser les données générées par une vue SQL. Je compteur qui comme la vue d'URL contient une certaine logique pour extraire les données appropriées, et un HTTP POST contient une logique, une HTTP POST pourrait être utilisé pour insérer des données. En ce qui concerne l'application de blog, l'affichage de l'URL / services / blog / entries / actuel aurait pour effet d'ajouter une entrée de blog au moment où il a été affiché. Si vous aviez à HTTP PUT une nouvelle entrée de blog, le client doit savoir comment le serveur organise les données sous-jacentes blog. L'application de blog discutées dans cet article sont organisés par date, mais il n'est pas nécessaire. / services / blog / entries / Archives Cette URL spécifie l'URL racine de base pour toutes les entrées de blog stockées sur le serveur HTTP. Dans un sens abstrait, tous les services Web ont une notion de ressource racine URL. Le but de la ressource racine Web est de définir un point d'entrée principal à l'ensemble des ressources dans le service Web. Pensez à cette URL dans le fichier index.html de votre service Web. Cela ne veut pas dire que certaines URL sont déconnectés de la hiérarchie root URL de base (par exemple, les URL de vue), mais cela ne signifie qu'un dispositif de gamme peuvent parcourir l'ensemble des ressources en utilisant l'URL racine. La racine Web est également un exemple d'une URL de collecte. Collection des URL se comportent un peu différemment que les URL régulière. Par exemple, considérez les deux réponses suivantes pour l'URL racine. Notez que l'URL ne doit pas retourner XML, mais XML est utilisé pour la simplicité.
Il ya deux réponses dans le code exemple. La première réponse est un élément racine qui a comme un enfant un élément item unique. L'élément item contient pas d'éléments enfants et a deux attributs, href et id. La deuxième réponse est semblable au premier, sauf que le point est un élément enfant de données, et il n'y a pas d'attribut href. Au lieu de cela, dans la deuxième réponse, il ya une référence Web. La différence entre les deux réponses est la traduction de ce que doit être retourné quand une collection d'URL est référencé. Une collection d'URL est une URL qui lui-même ne contient pas de données, mais sert de référence à une collection de morceaux de données. Lorsque la collection d'URL est référencé, le client peut retourner un ensemble de références Web aux données réelles ou des données proprement dite. Prenant comme exemple l'application de blog, le format Atom référencement de la collection Web moyens de revenir tous les morceaux de données. Toutefois, il est souvent difficile à restituer tous les morceaux de données, comme le flux de retour des données pourraient être gigantesques. Pour réduire le trafic, les références de liaison sont retournés. Mais de chasser notre queue de plus, différents formats ne permettent pas les liens. En règle générale, le retour de ce qui est le mieux adapté à votre application. Peu importe comment vous renvoyer des données, être cohérents. Cela signifie que si toutes vos données d'URL de collecte de retour, puis retour de données, et vice versa. Une racine ou d'une URL de collecte pour la plupart, seront appelées à l'aide du protocole HTTP GET verbe. Il y aura probablement des paramètres de requête pour sélectionner des entrées spécifiques qui, appliqué à des URL avec un grand nombre d'entrées permet de réduire la longueur du document. Par exemple, l'URL view / services / blog / entries / actuel pourrait également être exprimées en / services / blog / entries / archives? Last = 35. Le paramètre de la dernière requête est utilisée pour sélectionner la dernière n entrées. Les verbes HTTP PUT et DELETE peuvent s'appliquer si les entrées de collection valide sont ajoutés. S'il est possible de convertir une URL à une collecte de données Web des ressources, il est logique de le faire que si le serveur ne pas générer dynamiquement la collection. Par exemple, dans le cas du logiciel de blog, la collection est produite à partir d'une base de données. Exécution PUT ou DELETE ne fait pas de sens que si il ya une logique qui traite les données envoyées par les commandes. Et enfin, il est possible de traiter une HTTP POST s'il y est associée à une logique côté serveur. / services/blog/entries/archive/2006/07/06 Cette URL spécifie un ensemble de données-URL ressource qui lorsqu'ils sont référencés contient les données d'un utilisateur est intéresse Les données qui sont envoyés est déterminé par le client dans les entêtes HTTP Accept (nous y reviendrons plus loin dans l'article 5). Un collecteur de données de ressources Web est capable de traiter tous les verbes HTTP (GET, PUT, POST et DELETE), comme expliqué dans les sections précédentes. Lorsque l'URL est référencé, un morceau de données est retournée, mais vous devez vous demander vous ce que le format des données est efficace. Utilisation de l'application de blog à titre d'exemple, le morceau de données retourné doit faire croire que l'URL est le référencement d'une collection d'URL, car le format Atom est un format unique qui assume toutes les URL est une collection d'entrées de blog, même si il peut y avoir qu'une seule entrée. Ainsi, lorsque vous créez des données des URL de ressources, gardez à l'esprit que bien que logiquement ils sont une seule pièce de données, le format des données pourraient faire l'URL sembler être une URL de collecte. Lorsque le client effectue une requête HTTP GET, le serveur aura aucun problème la production des données. Le serveur ne peut se confondre, toutefois, si le client exécute un PUT HTTP ou HTTP POST. Les données envoyées au serveur peut contenir des morceaux de données multiples, même si le serveur devrait seulement un morceau de données unique. Ainsi, la solution logique est de générer une erreur en disant que les utilisateurs ne pouvez pas poster des entrées multiples. Une autre solution pourrait être de regarder dans la liste des entrées et annonce la première entrée. Le problème avec cette stratégie est qu'elle est incompatible avec l'intention du client. Lorsque le client envoie des données qui contient plusieurs éléments d'information, ils attendent de ces multiples éléments d'information pour être sauvé. Si le serveur ne sauvegarde que d'une seule pièce, le client est à se demander ce qui n'allait pas. Quand une erreur est générée, le client n'est pas à se demander ce qui n'allait pas. Les données des URL de ressources doivent être aussi précis que possible. Vous ne voulez pas d'ambiguïté qui se posent à un moment ou plus tard dans le temps. Par exemple, si votre application de blog d'aujourd'hui ne permet qu'un seul utilisateur, mais à un certain point dans l'avenir, il pourrait permettre à plusieurs utilisateurs, puis ajouter cette fonctionnalité. Dans le cas de l'application de blog, cela signifierait / user / services. Pour la version initiale de la demande, / user / services peuvent être codées en dur et non pertinentes lors du traitement de l'URL. Cependant, vous avez créé un espace réservé pour le cas où vous avez plusieurs utilisateurs. Je ne dis pas que vous devez compenser tout changement potentiel dans le futur, car après tout, vous pouvez utiliser la redirection de serveur (par exemple, http://user.server/services). Ce que vous ne voulez pas oublier est que les données des URL de ressources survivra à votre serveur, votre technologie, et même de votre entreprise. Les URL sont comme les pièces de l'immobilier et font partie de la reconnaissance de votre marque, vous devez donc les choisir avec soin. Une fois que les gens savent et associer un certain URL avec le site de AWeb ou une compagnie, il est très difficile pour ces personnes de passer à une autre URL. Par exemple, imaginez si, demain, Google a décidé de s'appeler ReallyCoolServer. La société ReallyCoolServer n'aurait pas immédiatement le même impact ou la reconnaissance de la marque que Google a aujourd'hui. services / / blog / entries / archives? supprimer = 35 et / services/blog/entries/archive/2005? passées = 35 Les exemples fournis dans cet article montrent que les URL peuvent avoir des paramètres de requête. Toutefois, à la fois des URL dans la présente section en-tête ne sont pas des exemples de la logique qui a la même intention que la seconde est une URL acceptable. La première URL n'est pas acceptable, car elle implique une modification des données. Vous avez déjà utilisé des paramètres de requête pour exécuter une opération de filtrage d'une requête HTTP GET. Utiliser les paramètres de requête dans ce contexte est acceptable parce qu'elle ne change pas la nature sous-jacente des données; vous spécifiez un filtre. Le filtre peut être utilisé pour convertir le jeu de résultats d'une langue à l'autre, et elle mai contenir des algorithmes complexes. Mais indépendamment de l'algorithme, il n'y a aucun changement dans les données qui sont filtrés. La première URL, / services / nouveaux commentaires / / archives? Delete = 35 ans, est différente en ce qu'elle utilise le mot "supprimer", et "supprimer" des moyens pour supprimer un enregistrement (s). Ainsi, le paramètre de requête va changer les données sous-jacentes et n'est pas acceptable. Bien sûr, il ya une exception si le mot "delete" ne signifie pas supprimer dans le sens de "supprimer la source de données», mais plutôt comme un moyen de supprimer l'ensemble généré résultat. Puis le supprimer clé devient une opération de filtrage et acceptable. Modifications apportées aux données sous-jacentes sont le résultat de l'exécution du HTTP POST, PUT, DELETE ou un verbe. Les URL utilisées par l'application de blog sont relativement génériques et d'illustrer la plupart des variations que vous pourrez rencontrer lors de la construction REST les services Web. Dans l'ensemble, vous devriez vous rappeler que le repos de construction à base de services Web est comme l'interaction avec une base de données qui prend en charge SQL. Vous avez un certain nombre de verbes HTTP qui peuvent être utilisés pour ajouter, de manipuler, de supprimer et récupérer des données. Comment ces données est géré est de la responsabilité du concepteur de service Web REST. Je ne vais pas à marcher à travers l'implémentation du serveur parce que c'est une question de demande. Dans le cas de l'application de blog, vous manipulez des entrées de blog, qui ont très peu de logique d'affaires. Par exemple, si vous revanche, une application de blog avec une demande de prêt hypothécaire, vous pouvez voir que la demande de prêt a un peu de logique, et il a aussi un type d'URL qui ne contient pas de données et est défini comme suit. services / / hypothèques / calcule / paiements L'URL défini n'est pas une banque de données Web des ressources, mais une question "en, réponse à« URL. Il n'existe pas de données côté serveur, ou afficher des données, ou la collecte de données. Il ya seulement un calcul, d'où le seul verbe HTTP qui peut être utilisé est HTTP POST. Les autres verbes HTTP ne font pas de sens et ne devraient pas être utilisés dans ce contexte. un article présenté par Sonja Lande Disclaimer:Notre site n'est pas responsable du contenu de cet article. Webarticles est une ressource d'information gratuite. Important: Cet article «Mettre en œuvre l'application Logic Layer" a été traduit par un logiciel automatique. Nous nous sentons désolés pour les fautes d'orthographe que mai ont eu lieu. Nous vous remercions de votre compréhension.
|
|||||
| Online: 413 users browsing the articles directory |
|
|