使用不同类型的客户端创建干净且标准的API

时间:2015-06-30 04:50:04

标签: javascript php python node.js api

我想创建一个api,各种客户端可以连接到它,如Web,移动平台等。我的问题是,有时每个客户端的情况都不同。例如,我使用不同的方法进行Web和移动平台的身份验证,我的问题是:

  

我必须为每种类型的客户端创建不同的文件或使用if   else语句检测客户端类型并在中执行适当的功能   同班同学?

我想创建干净且标准的API。我知道这可以有很多答案和一个广泛的问题,但我只是有一个线索。

3 个答案:

答案 0 :(得分:2)

我发现使用YII 2.0 Framework

制作网络服务的最简单和最简单的方法之一

你需要做什么。

  1. 创建数据库架构
  2. 为每个表格使用Gii tool创建活动模型
  3. 为每个模型制作Rest Controller
  4. 使用Filsh/yii2-oauth2-server库进行身份验证
  5. 如果需要,使用Yii 2.0 RBAC
  6. 您可以为桌面客户端创建api / v1等API模块,为移动客户端创建api / v2,以便轻松分离Access Controls。查看example以分隔API版本如果您不想手动执行所有操作,只需克隆包含所有主要功能的karas/yii2-oauth2-rest-template

答案 1 :(得分:1)

NO stick to a standard

如果您正在进行基于API的操作,首先必须对调用进行标准化,对于不同的客户端,您不能为单个函数设置X,Y,Z。这将有一天失控。

您必须就要使用的功能达成标准协议,我确信在客户端这将需要最小的更改,因为我认为返回类型将是相同的。

此外,新开发人员难以维护。

所以坚持标准电话并达成共同协议。

答案 2 :(得分:1)

绝对没有'唯一的'方法来创建API。

然而,检查客户端的类型绝对不是可行的方法,因为它意味着检查标头,这可以在发送请求时伪造。

对于身份验证,如果您想使用不同的方法,最好的选择可能是采用不同的身份验证策略,并逐个尝试。如果第一次失败,则运行下一次,等等。 实现此目的的常用方法是添加身份验证中间件,该中间件尝试每个可用策略来验证客户端,如果不能,则停止请求。

这确实意味着即使您希望策略A仅适用于浏览器,它也可以用于从移动应用程序登录,但是没有办法阻止它,无论如何它不应该导致任何安全问题。如果是这样,问题可能就在其他地方。