該項目的目的是:
規範摘要:
這是其對應客戶端移動應用程序,它消耗了此api-> android基礎的數據
安裝Ruby版本2.3.0,並使用Ruby Environment Manager設置它(在此處提供更多信息)。
安裝Postgres,然後在前景中啟動PostgreSQL服務器(此處更多信息)。
克隆存儲庫並進入其中:
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
就是這樣,您現在可以開始開發自己的應用程序!
(在Localhost開發時,請啟動MailCatcher,以接收用戶確認並恢復密碼電子郵件)
gem install mailcatcher
mailcatcher
應用程序本身幾乎是空的,它僅旨在提供一些基本的模塊,以某些模式實現結構並提供示例代碼。以下是規格:
該應用僅包含Rails-API相關的模塊,因此它比普通應用更薄,但缺少某些功能(如果需要,可以手動添加)。 API的架構遵循Rails和HTTP靜止的良好實踐,例如:
端點路由和代碼結構已準備好添加新的API版本。該版本是通過headers['Accept']選擇的,具有諸如application/vnd.railsapibase.v1之類的值以使用第一個版本。
為了提供應用程序示例代碼,它已經開發了代碼來管理notes (例如手寫的紙質說明表示),由title和content組成。因此,該應用程序具有註釋路由,控制器,模型和RSPECs來使用該註釋。
它的獨特目的是成為如何添加新代碼的指南,因此它將被bin/remove_notes shell腳本刪除。
為了構建API的全局控制器功能,已將不同的模塊作為ActiveSupport :: Confirceconsence實現,並使用假控制器進行了測試。這些模塊包含在apicontroller,該模塊是其餘控制器的父會控制器(檢查此帖子)。目前有4個模塊:身份驗證,錯誤處理,國際化和版本到期(檢查另一個)。代碼氣候是用於檢查該代碼以及所有其餘代碼均遵循良好實踐的服務(您必須激活它以使其使用它才能使用它)。
編碼氣候也可以使用其CLI在本地運行。
幾乎每個API都需要用戶,會話和身份驗證,因此這是該應用程序最重要的功能。所選的解決方案使用has_secure_password和has_secure_token帶有自定義實現來處理會話和用戶:
當用戶登錄時,返回一個令牌,並且必須在以後的請求中設置為headers['Authorization']以對其進行身份驗證。有關此信息的更多信息(這篇文章)
要檢查是否仍然可以使用版本,有一個模塊在每個方法調用之前都過濾。如果版本過期,它將返回錯誤,並且還有一個端點可以檢查客戶端的到期日期(例如:警告用戶更新應用程序)。如果要將到期日期設置為具體版本,只需將格式設置為字符串的整數設置為ENV['LAST_EXPIRED_VERSION'] 。當詢問時,所有版本相等或低於指定的版本將發送升級錯誤消息。使用ENV['LAST_WARNED_VERSION']設置要警告的更高版本的系統,將警告設置為某些版本是相同的。有關此信息的更多信息(這篇文章)
該應用程序被翻譯成英語(默認語言)和西班牙語(作為翻譯示例)。有一個簡單的模塊從request.env['HTTP_ACCEPT_LANGUAGE']中獲取該語言環境(可以通過Accept-Languange標頭設置),並將其設置為系統以自動返回適當的翻譯。有關此信息的更多信息(這篇文章)
要測試為特定語言設置所有需要的翻譯,請輸入以下行spec_helper.rb文件,將目標語言放置並運行rspec :
I18n.default_locale = :es
為了添加對API客戶端的控制,有一個秘密的API密鑰驗證系統可以激活,以確保它是創建用戶的有效客戶端。要激活此服務,只需將值設置為ENV['SECRET_API_KEY'] 。調用創建新用戶方法時,必須在headers['Authorization']中發送秘密API密鑰。
該項目是使用TDD流程開發的,所有代碼均使用RSPEC測試,遵循BetterSpecs.org定義的最佳實踐指南。保持這種方式很重要。代碼氣候檢查測試是否涵蓋了所有代碼案例。 Travis-CI是一個連續的集成系統,每次推動推動時都會運行測試。如果您想使用此服務,則必須在他們的網站上啟用它們。如果不這樣做,只需刪除.travis.yml文件即可。
為了避免手動修改代碼以準備文件以啟動新項目的負擔,已經實現了一些腳本。您可以在bin/文件夾中找到它們(使用後它們會自我破壞)。
他們已經通過ShellCheck進行了分析。
為了避免部署問題,Postgres數據庫已從開頭設置為測試和開發數據庫系統。 Heroku將其用作默認數據庫系統的事實也被考慮。
該項目使用Rails 5.1.4(API模塊)和Ruby 2.3.0,並打算使用Gemnasium Service保持最新狀態。如果您想使用此服務,則必須激活此服務。
為了提高代碼優雅和可讀性,該紅寶石風格指南已被用作參考。 Rubocop Gem是基於該樣式指南的Ruby靜態代碼分析器。只是運行:
gem install rubocop
rubocop
請記住, .rubocop.yml文件定義了配置(如果未使用的話,將其刪除)。
使用ActiveModelializer gem對響應進行格式化。連續化器負責格式化輸出JSON,並且是將該層與模型和控制器解矛的好方法。此外,它們的版本像控制器一樣(例如: Api::V1::Serializer ),因為它們直接干擾了每個API版本的輸出。這將有助於我們保留舊版本的合同。
這是其對應客戶端移動應用程序,它消耗了此api-> android基礎的數據
我不是經驗豐富的開發人員,因此所有建議和貢獻都非常歡迎!
rspec
rubocop
不幸的是,還沒有貢獻者。
http://jordifierro.com