Diese Projekte zielen darauf ab:
Spezifikationszusammenfassung:
Hier ist die mobile App des Gegenstücks, die Daten aus dieser API -> Android -Base konsumiert
Installieren Sie Ruby Version 2.3.0 und stellen Sie ihn mit Ihrem Ruby Environment Manager fest (weitere Informationen hier).
Installieren Sie Postgres und starten Sie den PostgreSQL -Server im Vordergrund (weitere Informationen hier).
Klonen Sie das Repository und gehen Sie hinein:
git clone git://github.com/jordifierro/rails-api-base.git --origin rails-api-base your-project-name
cd your-project-name
./bin/rename_project YourProjectName
./bin/remove_notes
./bin/create_psql_user yourprojectname
./bin/setup
rspec
./bin/reset_git https://github.com/yourusername/your-project-name.git
Das war's, Sie können jetzt beginnen, Ihre eigene App zu entwickeln!
(Starten Sie während der Entwicklung bei Localhost MailCatcher, um die Benutzerbestätigung zu erhalten und Kennwort -E -Mails wiederherzustellen.)
gem install mailcatcher
mailcatcher
Die Anwendung selbst ist nahezu leer, zielt nur darauf ab, einige grundlegende Module bereitzustellen, die Strukturen mit einigen Mustern zu implementieren und Beispielcode anzugeben. Hier sind die Spezifikationen:
Die App enthält nur die mit Rails-API bezogenen Module, daher ist sie dünner als eine normale App, aber es fehlen einige Funktionen (die bei Bedarf manuell hinzugefügt werden können). Die Architektur der API folgt Rails und HTTP -Rastful Good Practices wie:
Die Endpunktrouten und die Codestruktur sind bereit, neue API -Versionen hinzuzufügen. Die Version wird über headers['Accept'] mit Werten wie application/vnd.railsapibase.v1 ausgewählt, um die erste Version zu verwenden.
Um den App -Beispielcode bereitzustellen, wurde Code entwickelt, um notes zu verwalten ( title content Somit enthält die App die Anmerkungen Routen, Controller, Modell und RSPECs, um mit diesen Notizen zu arbeiten.
Sein einzigartiger Zweck ist es, ein Leitfaden zum Hinzufügen neuer Code zu sein, sodass er durch das Shell -Skript bin/remove_notes gelöscht wird.
Um die globalen Controller -Merkmale der API zu strukturieren, wurden verschiedene Module als Activesupport :: Bedenken implementiert und mit gefälschten Controllern getestet. Diese Module sind in den Apicontroller enthalten, der Vater Controller des Restes der Controller ist (überprüfen Sie diesen Beitrag). Im Moment gibt es 4 Module: Authentifizierung, Fehlerbehandlung, Internationalisierung und Version des Version (überprüfen Sie dies andere). Codeklima ist der Service, mit dem überprüft wird, ob dieser und der Rest des Codes gute Praktiken folgt (Sie müssen ihn für Ihr Projekt aktivieren, um es zu verwenden).
Codeclimate kann auch lokal mit seiner CLI ausgeführt werden.
Fast jede API erfordert Benutzer, Sitzungen und Authentifizierungen. Dies ist daher die wichtigste Funktion dieser App. Die ausgewählte Lösung verwendet has_secure_password und has_secure_token mit einer benutzerdefinierten Implementierung, um Sitzungen und Benutzer zu behandeln:
Ein Token wird zurückgegeben, wenn sich die Benutzer anmelden, und es muss auf spätere Anfragen zur Authentifizierung auf headers['Authorization'] eingestellt werden. Weitere Informationen dazu (diesen Beitrag)
Um zu überprüfen, ob noch eine Version verwendet werden kann, gibt es ein Modul, das vor jedem Methodenaufruf filtert. Es wird Fehler zurückgegeben, wenn die Version abgelaufen ist und es auch einen Endpunkt gibt, um das Ablaufdatum des Clients zu überprüfen (z. B. den Benutzer, die App zu aktualisieren). Wenn Sie das Ablaufdatum auf eine konkrete Version festlegen möchten, legen Sie einfach eine Ganzzahl fest, die auf String auf ENV['LAST_EXPIRED_VERSION'] formatiert ist. Alle Versionen, die gleich oder unter der angegebenen Versionen sind, senden bei der Aufforderung eine Upgrade -Fehlermeldung. Das System, um eine Warnung auf einige Versionen festzulegen, ist dieselbe, wobei ENV['LAST_WARNED_VERSION'] die höhere Version festlegen, die Sie warnen möchten. Weitere Informationen dazu (diesen Beitrag)
Die App wird in Englisch (Standardsprache) und Spanisch (genau wie Übersetzungsbeispiel) übersetzt. Es gibt ein einfaches Modul, das das Gebietsschema von request.env['HTTP_ACCEPT_LANGUAGE'] (der durch den Accept-Languange Header eingestellt werden kann) auf das System eingereicht werden kann) und setzt es auf das System, um die entsprechende Übersetzung automatisch zurückzugeben. Weitere Informationen dazu (diesen Beitrag)
Um zu testen, dass alle erforderlichen Übersetzungen für eine bestimmte Sprache festgelegt sind, wenden Sie sich die folgende Zeile zur Datei spec_helper.rb an, platzieren Sie die Zielsprache und führen Sie rspec aus:
I18n.default_locale = :es
Um eine gewisse Kontrolle über die API -Clients hinzuzufügen, gibt es ein geheimes API -Schlüsselüberprüfungssystem, das aktiviert werden kann, um sicherzustellen, dass dies ein gültiger Client ist, der den Benutzer erstellt. Um diesen Dienst zu aktivieren, setzen Sie einfach einen Wert auf ENV['SECRET_API_KEY'] . Der geheime API -Schlüssel muss beim Aufrufen neuer Benutzermethoden an headers['Authorization'] gesendet werden.
Dieses Projekt wurde unter Verwendung des TDD -Prozesss entwickelt und der gesamte Code wird mit RSPEC nach Best Practices -Richtlinien getestet, die bei Arespecs.org definiert sind. Es ist wichtig, es so zu halten. Code -Klimaprüfungen, dass die Tests alle Codefälle abdecken. Travis-Ci ist ein kontinuierliches Integrationssystem, das die Tests jedes Mal durchführt, wenn ein Push durchgeführt wird. Wenn Sie diese Dienste nutzen möchten, müssen Sie sie auf ihren Websites aktivieren. Wenn Sie dies nicht tun, löschen Sie einfach die Datei .travis.yml .
Um die Belastung des manuellen Änderns des Code zu vermeiden, um die Dateien für das Starten eines neuen Projekts vorzubereiten, wurden einige Skripte implementiert. Sie können sie in bin/ Ordner finden (sie sind nach dem Gebrauch selbst zerstört).
Sie wurden von Shellcheck analysiert.
Um Bereitstellungsprobleme zu vermeiden, wurde die Postgres -Datenbank von Anfang an als Datenbanksystem für Testen und Entwicklung eingerichtet. Die Tatsache, dass Heroku es als Standard -DB -System verwendet, wurde ebenfalls in Betracht gezogen.
Das Projekt verwendet Rails 5.1.4 (API -Modul) und Ruby 2.3.0 und beabsichtigt, mit dem Gemnasienservice auf dem Laufenden zu bleiben. Sie müssen diesen Dienst für Ihr Repo aktivieren, wenn Sie ihn verwenden möchten.
Um die Codeleganz und die Lesbarkeit zu erhöhen, wurde dieser Ruby -Style -Handbuch als Referenz verwendet. Rubocop Gem ist ein Ruby Static Code Analizer basierend auf dieser Stilhandbuch. Einfach rennen:
gem install rubocop
rubocop
Denken Sie daran, dass .rubocop.yml -Datei die Konfiguration definiert (entfernen Sie sie, falls dies nicht verwendet wird).
Die Antworten werden unter Verwendung des Edelstärke von ActivemodelSerializern formatiert. Serialisierer sind dafür verantwortlich, den Ausgang JSON zu formatieren und eine gute Möglichkeit, diese Schicht von Modellen und Controllern zu entkoppeln. Darüber hinaus werden sie wie Controller versioniert (z. B. Api::V1::Serializer ), da sie die Ausgabe jeder API -Version direkt beeinträchtigen. Dies wird uns helfen, alte Versionsverträge zu führen.
Hier ist die mobile App des Gegenstücks, die Daten aus dieser API -> Android -Base konsumiert
Ich bin kein erfahrener Entwickler von Schienen, daher sind alle Vorschläge und Beiträge mehr als willkommen!
rspec
rubocop
Leider gibt es noch keine Mitwirkenden.
http://jordifierro.com