Proyek ini bertujuan untuk menjadi:
Ringkasan Spesifikasi:
Berikut adalah aplikasi seluler klien mitra yang mengkonsumsi data dari API ini -> Basis Android
Instal Ruby Versi 2.3.0 dan atur dengan Ruby Environment Manager Anda (info lebih lanjut di sini).
Instal Postgres dan mulai server PostgreSQL di latar depan (info lebih lanjut di sini).
Klon Repositori dan masuk ke dalamnya:
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
Itu saja, Anda sekarang dapat mulai mengembangkan aplikasi Anda sendiri!
(Saat mengembangkan di LocalHost, mulailah MailCatcher untuk menerima konfirmasi pengguna dan memulihkan email kata sandi)
gem install mailcatcher
mailcatcher
Aplikasi itu sendiri hampir kosong, hanya bertujuan untuk menyediakan beberapa modul dasar, mengimplementasikan struktur dengan beberapa pola dan memberikan kode sampel. Berikut spesifikasinya:
Aplikasi ini hanya mencakup modul terkait Rails-API, jadi lebih tipis dari aplikasi normal tetapi tidak memiliki beberapa fitur (yang dapat ditambahkan secara manual jika diperlukan). Arsitektur API mengikuti Rails dan HTTP Restful Good Practices seperti:
Rute titik akhir dan struktur kode siap untuk menambahkan versi API baru. Versi ini dipilih melalui headers['Accept'] dengan nilai -nilai seperti application/vnd.railsapibase.v1 untuk menggunakan versi pertama.
Untuk memberikan kode sampel aplikasi, telah dikembangkan kode untuk mengelola notes (seperti representasi catatan kertas tulisan tangan), disusun oleh title dan content . Dengan demikian, aplikasi memiliki rute catatan, pengontrol, model, dan RSPEC untuk bekerja dengan catatan itu.
Tujuannya yang unik adalah menjadi panduan tentang cara menambahkan kode baru, sehingga akan dihapus oleh naskah Shell bin/remove_notes .
Untuk menyusun fitur pengontrol global API, modul yang berbeda telah diimplementasikan sebagai ActiveSupport :: Concern dan diuji menggunakan pengontrol palsu. Modul -modul tersebut dimasukkan ke apicontroller, yang merupakan pengontrol ayah dari pengontrol lainnya (periksa posting ini). Saat ini ada 4 modul: otentikasi, penanganan kesalahan, internasionalisasi dan kedaluwarsa versi (periksa ini). Iklim kode adalah layanan yang digunakan untuk memeriksa bahwa ini dan semua kode lainnya mengikuti praktik yang baik (Anda harus mengaktifkannya agar proyek Anda menggunakannya).
Codeclimate juga dapat dijalankan secara lokal dengan CLI -nya.
Hampir setiap API membutuhkan pengguna, sesi, dan otentikasi, jadi ini adalah fitur terpenting dari aplikasi ini. Solusi yang dipilih menggunakan has_secure_password dan has_secure_token dengan implementasi khusus untuk menangani sesi dan pengguna:
Token dikembalikan ketika pengguna masuk dan harus diatur ke headers['Authorization'] atas permintaan selanjutnya untuk mengotentikasi mereka. Info lebih lanjut tentang itu di (posting ini)
Untuk memeriksa apakah suatu versi masih dapat digunakan, ada modul yang menyaring yang sebelum setiap metode panggilan. Ini akan mengembalikan kesalahan jika versi telah kedaluwarsa dan ada juga titik akhir untuk memeriksa tanggal kedaluwarsa dari klien (misalnya: untuk memperingatkan pengguna untuk memperbarui aplikasi). Jika Anda ingin mengatur tanggal kedaluwarsa ke versi konkret, cukup atur integer yang diformat ke string ke ENV['LAST_EXPIRED_VERSION'] . Semua versi yang sama atau di bawah yang ditentukan akan mengirim pesan kesalahan peningkatan saat ditanyakan. Sistem untuk menetapkan peringatan ke beberapa versi adalah sama, menggunakan ENV['LAST_WARNED_VERSION'] untuk mengatur versi yang lebih tinggi yang ingin Anda peringatkan. Info lebih lanjut tentang itu di (posting ini)
Aplikasi ini diterjemahkan ke bahasa Inggris (bahasa default) dan Spanyol (seperti contoh terjemahan). Ada modul sederhana yang mengambil lokasi dari request.env['HTTP_ACCEPT_LANGUAGE'] (yang dapat diatur melalui header Accept-Languange ) dan mengaturnya ke sistem untuk secara otomatis mengembalikan terjemahan yang sesuai. Info lebih lanjut tentang itu di (posting ini)
Untuk menguji bahwa semua terjemahan yang dibutuhkan ditetapkan untuk bahasa tertentu, tidak mengkomentasikan baris berikut ke file spec_helper.rb , tempatkan di sana bahasa target dan jalankan rspec :
I18n.default_locale = :es
Untuk menambahkan beberapa kontrol atas klien API, ada sistem verifikasi kunci API rahasia yang dapat diaktifkan untuk memastikan bahwa itu adalah klien yang valid yang menciptakan pengguna. Untuk mengaktifkan layanan ini cukup atur nilai ke ENV['SECRET_API_KEY'] . Kunci API Rahasia harus dikirim di headers['Authorization'] saat menelepon Buat metode pengguna baru.
Proyek ini telah dikembangkan menggunakan proses TDD dan semua kode diuji menggunakan RSPEC, mengikuti pedoman praktik terbaik yang ditentukan di Betterspecs.org. Penting untuk tetap seperti itu. Kode iklim memeriksa bahwa tes mencakup semua kasus kode. Travis-CI adalah sistem integrasi berkelanjutan yang menjalankan tes setiap kali dorongan dibuat. Jika Anda ingin menggunakan layanan ini, Anda harus mengaktifkannya di situs web mereka. Jika tidak, cukup hapus file .travis.yml .
Untuk menghindari beban memodifikasi kode secara manual untuk menyiapkan file untuk memulai proyek baru, beberapa skrip telah diimplementasikan. Anda dapat menemukannya di dalam bin/ folder (mereka hancur sendiri setelah digunakan).
Mereka telah dianalisis oleh Shellcheck.
Untuk menghindari masalah penyebaran, basis data Postgres telah diatur dari awal sebagai sistem basis data untuk pengujian dan pengembangan. Fakta bahwa Heroku menggunakannya sebagai sistem DB defaultnya telah dipertimbangkan juga.
Proyek ini menggunakan Rails 5.1.4 (Modul API) dan Ruby 2.3.0 dan bermaksud untuk tetap up to date menggunakan layanan gemnasium. Anda harus mengaktifkan layanan ini untuk repo Anda jika Anda ingin menggunakannya.
Untuk meningkatkan keanggunan kode dan keterbacaan, panduan gaya ruby ini telah digunakan sebagai referensi. Rubocop Gem adalah analisis kode statis ruby berdasarkan panduan gaya itu. Jalankan saja:
gem install rubocop
rubocop
Ingatlah bahwa file .rubocop.yml menentukan konfigurasi (hapus jika tidak digunakan).
Respons diformat menggunakan permata ActiveModelserializers. Serializer bertanggung jawab untuk memformat output JSON, dan merupakan cara yang baik untuk memisahkan lapisan ini dari model dan pengontrol. Selain itu, mereka diversi seperti pengontrol (misalnya: Api::V1::Serializer ) karena mereka secara langsung mengganggu output dari setiap versi API. Ini akan membantu kami menjaga kontrak versi lama.
Berikut adalah aplikasi seluler klien mitra yang mengkonsumsi data dari API ini -> Basis Android
Saya bukan pengembang berpengalaman rails sehingga semua saran dan kontribusi lebih dari disambut!
rspec
rubocop
Sayangnya, belum ada kontributor.
http://jordifierro.com