我有一个现有的RoR web应用程序,它目前使用Devise进行身份验证。
我计划以这样或那样的方式为移动后端添加API功能。
您是否建议在web应用程序中添加API功能,并使用JWT来启用移动身份验证。或者,您是否有两个独立的应用程序,一个web应用程序和一个API,在Heroku上共享相同的Postgres实例?
我看到了正反两方面的好处,但在我看来,将其分离为两个应用程序将超过在web应用程序中添加API功能。也许,从一个API开始并添加移动应用程序客户端和web应用程序客户端功能是最有意义的。
创建一个新的仅API后端一开始可能更容易,但您必须复制模型中的所有应用程序逻辑,让双方都保持最新将是一件痛苦的事情。如果为新的API命名名称,使所有调用都位于/api_v1
或类似的名称下,则可以在同一个rails应用程序中执行此操作。下面是一篇文章,展示了如何使用不同版本的API。
用于身份验证的jwt是一种很好的方法,Devise可以通过添加类似gem的设计jwt来支持它们,因为添加路由以及自己处理令牌的创建和更新需要做很多工作。
对于API本身,您可能需要考虑将JSON:API与jsonapi-rails-gem一起使用,或者将GraphQL与GraphQL-gam一起使用。这样,当有人想使用你的API时,他们可以为他们的框架使用一个适配器,可以与这种API对话,而不必担心它返回的结构。这两个API都有适配器,可与Andrioid、IOS、Ember、React和所有其他主要前端框架配合使用。