该项目的目的是:
规范摘要:
这是其对应客户端移动应用程序,它消耗了此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