You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: fr/00_before.adoc
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,7 @@ L’œuvre originale étant non maintenue, j’ai voulu mettre à jour cet excel
9
9
10
10
https://twitter.com/kurenn[Abraham Kuri] est un développeur Rails avec 5 ans d’expérience (sûrement plus maintenant). Son expérience inclut le travail en tant que _freelance_ dans la construction de produits logiciels et plus récemment dans la collaboration au sein de la communauté open source. Diplômé en informatique d’ITESM, il a fondé deux sociétés au Mexique (http://icalialabs.com/[Icalia Labs] et http://codeandomexico.org/[Codeando Mexico]).
11
11
12
-
De mon côté, je m’appelle http://rousseau-alexandre.fr[Alexandre Rousseau] et je suis un développeur Rails avec plus de 4 ans d’expérience (à l’heure ou j’écris ces lignes). Je suis actuellement associé dans une entreprise (https://isignif.fr[iSignif]) ou je construit et maintient un produit de type SAAS en utilisant Rails. Je contribue aussi à la communauté Ruby en produisant et maintenant quelques gemmes que vous pouvez consulter sur https://rubygems.org/profiles/madeindjs[mon profil Rubygems.org]. La plupart de mes projets sont sur Github donc n’http://github.com/madeindjs/[hésitez pas à me suivre].
12
+
De mon côté, je m’appelle http://rousseau-alexandre.fr[Alexandre Rousseau] et je suis un développeur Rails avec plus de 4 ans d’expérience (à l’heure ou j’écris ces lignes). Je suis actuellement associé dans une entreprise (https://isignif.fr[iSignif]) ou je construit et maintient un produit de type SAAS en utilisant Rails. Je contribue aussi à la communauté Ruby en produisant et maintenant quelques gemmes que vous pouvez consulter sur https://rubygems.org/profiles/madeindjs[mon profil Rubygems.org]. La plupart de mes projets sont sur Github donc http://github.com/madeindjs/[n’hésitez pas à me suivre].
13
13
14
14
Tout le code source de ce livre est disponible au format https://asciidoctor.org[Asciidoctor] sur https://github.com/madeindjs/api_on_rails[Github]. Ainsi n’hesitez pas à https://github.com/madeindjs/api_on_rails/fork[forker] le projet si vous voulez l’améliorer ou corrigé une faute qui m’aurais échappé.
Copy file name to clipboardExpand all lines: fr/01_introduction.adoc
+11-15Lines changed: 11 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,17 +16,13 @@ Dans ce premier chapitre, je vous expliquerai comment configurer votre environne
16
16
17
17
Dans les prochains chapitres, nous allons construire l’application en suivant une méthode de travail simple que j’utilise quotidiennement. Nous développerons toute l’application en utilisant le *développement piloté par les tests* (TDD). Je vous expliquerai aussi l’intérêt d’utiliser une API pour votre prochain projet et de choisir un format de réponse adapté comme le JSON ou le XML. Plus loin, nous mettrons les mains dans le code et nous compléterons les bases de l’application en construisant toutes les routes nécessaires. Nous sécuriserons aussi l’accès à l’API en construisant une authentification par échange d’en-têtes HTTP. Enfin, dans le dernier chapitre, nous ajouterons quelques techniques d’optimisation pour améliorer la structure et les temps de réponse du serveur.
18
18
19
-
L’application finale sera une fonction pour une application de place de marché où les utilisateurs seront en mesure de passer des commandes, télécharger des produits et plus encore. Il existe de nombreuses options pour créer une boutique en ligne comme http://shopify.com/[Shopify], http://spreecommerce.com/[Spree] ou http://magento.com/[Magento].
19
+
L’application finale sera une application de place de marché footnote:[Une application de type de marché permet à des vendeurs de mettre en place leur propore boutique en ligne.] où les utilisateurs seront en mesure de passer des commandes, télécharger des produits et plus encore. Il existe de nombreuses options pour créer une boutique en ligne comme http://shopify.com/[Shopify], http://spreecommerce.com/[Spree] ou http://magento.com/[Magento].
20
20
21
-
Tout au long de ce voyage (cela dépend vraiment de votre expertise), vous allez vous améliorer et être en mesure de mieux comprendre certaines des meilleures ressources Rails. J’ai aussi pris certaines des pratiques que j’ai trouvées sur ces sites:
22
-
23
-
* http://railscasts.com/[Railscasts]
24
-
* http://codeschool.com/[CodeSchool]
25
-
* http://jsonapi.org/format/[JSON API]
21
+
Tout au long de ce voyage (cela dépend de votre expertise), vous allez vous améliorer et être en mesure de mieux comprendre certaines des meilleures ressources Rails. J’ai aussi pris certaines des pratiques que j’ai trouvées sur http://railscasts.com/[Railscasts], http://codeschool.com/[CodeSchool] et http://jsonapi.org/format/[JSON API].
26
22
27
23
=== Conventions sur ce livre
28
24
29
-
Les conventions de ce livre sont basées sur celles du Tutoriel Ruby on Rails. Dans cette section, je vais en mentionner quelques-unes que vous ne connaissez peut-être pas.
25
+
Les conventions de ce livre sont basées sur celles du https://www.railstutorial.org/book[Tutoriel Ruby on Rails]. Dans cette section, je vais en mentionner quelques-unes que vous ne connaissez peut-être pas.
30
26
31
27
Je vais utiliser de nombreux exemples en utilisant des ligne de commande. Je ne vais pas traiter avec Windows `cmd` (désolé les gars). Je vais baser tous les exemples en utilisant l’invite de ligne de commande de style Unix. Voici un exemple:
32
28
@@ -46,11 +42,11 @@ Si vous rencontrez une erreur quelconque lors de l’exécution d’une commande
46
42
47
43
=== Environnements de développement
48
44
49
-
Pour presque tous les développeurs, l’une des parties les plus douloureuses est de mettre en place un environnement de développement confortable. Si vous le faites correctement, les prochaines étapes devraient être un jeu d’enfant. Afin de vous faciliter la tâche et de vous motiver, je vais vous guider dans cette étape.
45
+
Pour presque tous les développeurs, l’une des parties les plus douloureuses est de mettre en place un environnement de développement confortable. Si vous le faites correctement, les prochaines étapes devraient être un jeu d’enfant. Je vais vous guider dans cette étape afin de vous faciliter la tâche et de vous motiver.
50
46
51
47
==== Éditeurs de texte et Terminal
52
48
53
-
Les environnements de développement diffèrent d’un ordinateur à l’autre. Ce n’est pas le cas avec les éditeurs de texte. Je pense que pour le développement avec Rails, un IDE est beaucoup trop lourd. Cependant, certains pensent que c’est la meilleure façon de travailler. Si c’est votre cas, je vous recommande d’essayer http://www.aptana.com/products/radrails[RadRails] ou http://www.jetbrains.com/ruby/index.html[RubyMine]. Tous deux sont bien maintenus et possèdent de nombreuses intégrations par défaut. Maintenant, pour ceux qui comme moi préfèrent des outils simples, je peux vous dire qu’il y a beaucoup d’outils disponibles que vous pourrez personnaliser via des plugins et plus.
49
+
Les environnements de développement diffèrent d’un ordinateur à l’autre. Ce n’est pas le cas avec les éditeurs de texte. Je pense que pour le développement avec Rails, un IDE est beaucoup trop lourd. Cependant certains pensent que c’est la meilleure façon de travailler. Si c’est votre cas, je vous recommande d’essayer http://www.aptana.com/products/radrails[RadRails] ou http://www.jetbrains.com/ruby/index.html[RubyMine]. Tous deux sont bien maintenus et possèdent de nombreuses intégrations par défaut. Maintenant, pour ceux qui, comme moi, préfèrent des outils simples, je peux vous dire qu’il existe beaucoup d’outils disponibles que vous pourrez personnaliser via des plugins et plus.
54
50
55
51
* *Éditeur de texte*: J’utilise personnellement http://www.vim.org/[Vim] comme éditeur. Au cas où vous n’êtes pas un fan de Vim, il y a beaucoup d’autres solutions comme http://www.sublimetext.com/[Sublime Text] qui est facile à prendre en main et surtout multi-plateforme . Il est fortement inspiré par http://macromates.com/[TextMate]. Une troisième option est d’utiliser un éditeur de texte plus récent comme https://atom.io/[Atom] de http://gitub.com/[Github]. C’est un éditeur de texte prometteur fait en JavaScript. Il est facile à personnaliser pour répondre à vos besoins. N’importe lequel des éditeurs que je viens de vous présenter fera le travail. Choisissez donc celui où vous êtes le plus à l’aise.
56
52
* *Terminal*: Je ne suis pas un fan de l’application Terminal par défaut sous Mac OS. Je recommande http://www.iterm2.com/#/section/home[iTerm2], qui est un remplacement de terminal pour Mac OS. Si vous êtes sous Linux, vous avez probablement déjà un bon terminal.
@@ -86,7 +82,7 @@ Il existe de nombreuses façons d’installer et de gérer Ruby. Vous devriez pr
86
82
$ ruby -v
87
83
----
88
84
89
-
Rails 5 nécessite l’installation de la version 2.2.2 ou supérieure. Pour l’installer, je vous recommande d’utiliser http://rvm.io/[Ruby Version Manager (RVM)] ou http://rbenv.org/[rbenv]. Ces outils vous permettront d’installer plusieurs versions de `ruby`. Dans ce tutoriel, nous allons utiliser RVM mais peu importe laquelle de ces deux options que vous utiliserez.
85
+
Rails 5.2 nécessite l’installation de la version 2.2.2 ou supérieure. Pour l’installer, je vous recommande d’utiliser http://rvm.io/[Ruby Version Manager (RVM)] ou http://rbenv.org/[rbenv]. Ces outils vous permettront d’installer plusieurs versions de `ruby`. Dans ce tutoriel, nous allons utiliser RVM mais peu importe laquelle de ces deux options que vous utiliserez.
90
86
91
87
Pour installer RVM, rendez vous sur https://rvm.io/ et installez la clé GPG footnote:[La clé GPG vous permet de vérifier l’identité de l’auteur des sources que vous téléchargez.]. Une fois cela fait:
92
88
@@ -163,7 +159,7 @@ Sachez que nous utiliserons http://rspec.info/[Rspec] comme suite de test. Assur
163
159
164
160
NOTE: L’option `--api` est apparue lors de la version 5 de Rails. Elle permet de limiter les librairies et _Middleware_ inclus dans l’application. Cela permet aussi d’éviter de générer les vues HTML lors de l’utilisation des générateurs de Rails.
165
161
166
-
La commande est donc la suivante
162
+
La commande est donc la suivante:
167
163
168
164
[source,bash]
169
165
----
@@ -176,15 +172,15 @@ Comme vous pouvez le deviner, les commandes ci-dessus généreront les élément
176
172
177
173
==== Installer Pow ou Prax
178
174
179
-
Vous pouvez vous demander.
175
+
Vous pouvez vous demander:
180
176
181
177
> Pourquoi diable voudrais-je installer ce type de paquet?
182
178
183
-
La réponse est simple. Nous allons travailler avec des http://en.wikipedia.org/wiki/Subdomain[sous-domaines]. http://pow.cx/[Pow] et https://github.com/ysbaddaden/prax.cr[Prax] vont nous aider a les créer très facilement.
179
+
La réponse est simple: parce que nous allons travailler avec des http://en.wikipedia.org/wiki/Subdomain[sous-domaines]. http://pow.cx/[Pow] et https://github.com/ysbaddaden/prax.cr[Prax] vont nous aider a les créer très facilement.
184
180
185
181
===== Installer Pow
186
182
187
-
Pow ne fonctionne que sous Mac OS. Ne vous inquiétez pas, il existe une alternative qui imite les fonctionnalités sous Linux. Pour l’installer, tapez simplement:
183
+
Pow ne fonctionne que sous Mac OS. Mais ne vous inquiétez pas: il existe une alternative qui imite les fonctionnalités sous Linux. Pour l’installer, tapez simplement:
188
184
189
185
[source,bash]
190
186
----
@@ -232,7 +228,7 @@ Si vous voulez démarrer le Prax automatiquement, ajoutez cette ligne au fichier
232
228
prax start
233
229
....
234
230
235
-
Lors de l’utilisation de https://github.com/ysbaddaden/prax.cr[Prax], vous devez spécifier le port de l’URL, dans ce cas-ci: http://market_place_api.dev:3000: Vous devriez voir l’application en marche comme le montre l’image suivante.
231
+
Lors de l’utilisation de https://github.com/ysbaddaden/prax.cr[Prax] vous devez spécifier le port de l’URL, dans ce cas-ci: http://market_place_api.dev:3000. Vous devriez ainsi voir l’application en marche comme le montre l’image suivante.
236
232
237
233
image:pow_running.png[L’application tourne sur l’URL market_place_api.dev/]
Copy file name to clipboardExpand all lines: fr/02_api.adoc
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,13 +27,13 @@ Nous n’allons pas construire d’interface pour l’interaction avec l’API a
27
27
28
28
> D’accord, mais j’ai besoin d’explorer et de visualiser l’API que je vais construire, non?
29
29
30
-
C’est juste. Si vous _googlez_ quelque chose lié à l’exploration d’une API, vous allez trouver pas mal de résultats. Vous pouvez par exemple utiliser https://www.getpostman.com/[Postman] qui est devenu incontournable.
30
+
C’est juste. Si vous _googlez_ quelque chose lié à l’exploration d’une API, vous allez trouver pas mal de résultats. Vous pouvez par exemple utiliser https://www.getpostman.com/[Postman] qui est devenu incontournable. Mais nous n'allons pas l'utiliser. Dans notre cas nous allons utiliser *cURL* qui est un outils en ligne de commande disponnible presque partout.
31
31
32
32
=== Mettre en place l’API
33
33
34
-
Une API est définie par https://fr.wikipedia.org/wiki/Interface_de_programmation[wikipedia] comme une interface de programmation d’application (API) qui est un ensemble normalisé de composants qui sert de façade par laquelle un logiciel offre des services à d’autres logiciels. En d’autres termes, il s’agit d’une façon dont les systèmes interagissent les uns avec les autres via une interface (dans notre cas un service web construit avec JSON)footnote:[Il existe d’autres types de protocoles de communication comme SOAP, mais nous n’en parlons pas ici.].
34
+
Une API est définie par https://fr.wikipedia.org/wiki/Interface_de_programmation[wikipedia] comme _une interface de programmation d’application (API) qui est un ensemble normalisé de composants qui sert de façade par laquelle un logiciel offre des services à d’autres logiciels_. En d’autres termes, il s’agit d’une façon dont les systèmes interagissent les uns avec les autres via une interface (dans notre cas un service web construit avec JSON)footnote:[Il existe d’autres types de protocoles de communication comme SOAP, mais nous n’en parlons pas ici.].
35
35
36
-
JSON est devenu incontournable en tant que média Internet en raison de sa lisibilité, de son extensibilité et de sa facilité à mettre en œuvre. Beaucoup de frameworks JavaScript l’utilisent comme protocole par défaut comme https://angularjs.org/[Angular] ou http://emberjs.com/[EmberJS]. D’autres grandes bibliothèques en Objective-C l’utilisent comme https://github.com/AFNetworking/AFNetworking[AFNetworking] ou http://restkit.org/[RESTKit]. Il existe probablement de bonnes solutions pour Android, mais en raison de mon manque d’expérience sur cette plate-forme de développement je ne suis peut-être pas la bonne personne pour vous recommander quelque chose.
36
+
JSON est devenu incontournable en tant que média Internet en raison de sa lisibilité, de son extensibilité et de sa facilité à mettre en œuvre. Beaucoup de frameworks JavaScript l’utilisent comme protocole par défaut comme https://angularjs.org/[Angular] ou http://emberjs.com/[EmberJS]. D’autres grandes bibliothèques en Objective-C l’utilisent comme https://github.com/AFNetworking/AFNetworking[AFNetworking] ou http://restkit.org/[RESTKit]. Il existe probablement de bonnes solutions pour Android mais en raison de mon manque d’expérience sur cette plate-forme de développement je ne peux pas vous recommander quelque chose.
37
37
38
38
Nous allons donc l’utiliser pour construire notre API. La première chose qui pourrait vous venir à l’esprit serait de commencer à créer des routes en vrac. Le problème est qu’elles ne seraient pas normalisées. Un utilisateur ne pourrait pas deviner quelle ressource est renvoyée par une route.
39
39
@@ -119,6 +119,8 @@ end
119
119
120
120
En définissant un _Namespace_ dans le fichier `routes.rb`, Rails mappera automatiquement ce _Namespace_ à un répertoire correspondant au nom sous le dossier contrôleur (dans notre cas le répertoire `api/`).
121
121
122
+
.Les types de media supportés par Rails
123
+
****
122
124
Rails supporte jusqu’à 35 types de médias différents! Vous pouvez les lister en accédant à la classe `SET` sous le module de `Mime`:
123
125
124
126
[source,bash]
@@ -128,6 +130,7 @@ Loading development environment (Rails 5.2.1)
C’est important parce que nous allons travailler avec JSON, l’un des types MIME intégrés par Rails. Ainsi nous avons juste besoin de spécifier ce format comme format par défaut:
133
136
@@ -155,7 +158,7 @@ Rails.application.routes.draw do
155
158
end
156
159
----
157
160
158
-
Vous voyez la différence? Nous n’avons pas seulement ajouté un [`Hash`][ruby_hash] de contraintes pour spécifier le sous-domaine, nous avons aussi ajouté l’option chemin d’accès et lui avons donné un _backslash_. Cela indique à Rails que le chemin de départ pour chaque requête est la racine par rapport au sous-domaine.
161
+
Vous voyez la différence? Nous n’avons pas seulement ajouté un https://ruby-doc.org/core-2.4.0/Hash.html[`Hash`] de contraintes pour spécifier le sous-domaine, nous avons aussi ajouté l’option chemin d’accès et lui avons donné un _backslash_. Cela indique à Rails que le chemin de départ pour chaque requête est la racine par rapport au sous-domaine.
159
162
160
163
==== Les conventions des API
161
164
@@ -203,7 +206,6 @@ De cette façon, nous pouvons très facilement définir la portée de notre API
0 commit comments