使用Laravel进行API版本控制和身份验证

时间:2019-12-13 10:57:50

标签: laravel laravel-passport api-versioning

我正在使用Laravel框架构建服务。我将生成一个 Android iOS 应用程序使用的API。同时,我将进行内部API调用以更新我的HTML / Blade视图(或以后再更新我的SPA前端)。所有3个客户端(网络 Android iOS )将由我们的团队开发,因此交流(很可能)很容易!

enter image description here

我进行了很多搜索,似乎在API版本控制方面有不同的方法(Best practices for API versioning?https://apisyouwonthate.com/blog/api-versioning-has-no-right-way)。 将我的问题与其他问题区分开来的是如何以及通过谁来访问API。我的API将仅由我们自己的应用程序(网络或移动应用程序)使用。对我们API的调用将由我们自己的应用程序生成。没有第三方应用程序将访问此API。

对此我有几个问题:

  1. 在这种情况下,哪种版本的API是正确的方法?将会使用该API的开发人员将在同一办公室,因此每次我们对API进行重大更改时都会进行应用程序更新。
  2. 使用子域作为API版本控制有好处吗?从财务上讲,如果我们使用SSL,则还需要购买通配符SSL来容纳子域,因此-在我看来-更糟。
  3. 在确定要遵循的API版本控制路径之后,我们需要选择如何向我们的API验证用户身份。使用Laravel,您可以使用令牌 JWT 护照等对API进行身份验证。我很确定我的服务不会用于其他服务进行身份验证,但这会将Passport从我的选择中删除吗?牢记这一点来实施Passport是否过大?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

需要URL版本,因为例如Google Play不允许强制更新,因此会有多个版本的android客户端同时工作。 我创建了一个简单的程序包来帮助URL版本控制和后备。 https://github.com/mbpcoder/laravel-api-versioning

对于资源版本控制,Laravel具有一个资源对象,该对象生成响应 最好为每个API版本创建一个文件夹。

例如,如果对API的更改更深入,例如您需要更改数据库结构,那么我通常会使用旧的API更新其控制器,模型...以适应新的结构。