Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用不同类型的客户端创建干净的标准API_Javascript_Php_Python_Node.js_Api - Fatal编程技术网

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

Javascript 使用不同类型的客户端创建干净的标准API,javascript,php,python,node.js,api,Javascript,Php,Python,Node.js,Api,我想创建一个api,让不同的客户端可以连接到它,比如Web、移动平台等。我的问题是,有时候每个客户端的情况都不一样。例如,我使用不同的方法对Web和移动平台进行身份验证,我的问题是: 我必须为每种类型的客户端创建不同的文件,如果需要,则使用 else语句来检测客户端类型并在 同一班 我想创建干净和标准的API。我知道这可能有很多答案,这是一个广泛的问题,但我只是有一个线索 NO stick to a standard 如果你是在做一个基于API的调用,你首先必须标准化调用,你不能为不同的客户端

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

我必须为每种类型的客户端创建不同的文件,如果需要,则使用 else语句来检测客户端类型并在 同一班

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

NO stick to a standard
如果你是在做一个基于API的调用,你首先必须标准化调用,你不能为不同的客户端的单个函数指定X,Y,Z。这总有一天会失控的

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

此外,新开发人员很难维护它

因此,坚持标准通话,达成共同协议

如果你是在做一个基于API的调用,你首先必须标准化调用,你不能为不同的客户端的单个函数指定X,Y,Z。这总有一天会失控的

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

此外,新开发人员很难维护它


因此,坚持标准通话,达成共同协议

创建API绝对不是“唯一”的方法

但是,检查客户机的类型肯定不是一个好办法,因为这意味着要检查头,发送请求时可以伪造头

对于身份验证,如果您想使用不同的方法,最好的办法可能是使用不同的身份验证策略,然后逐个尝试。如果第一个失败,则运行下一个,以此类推。 实现这一点的一种常见方法是添加一个身份验证中间件,该中间件尝试每种可用的策略对客户端进行身份验证,如果不能,则停止请求


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

创建API肯定不是“唯一”的方法

但是,检查客户机的类型肯定不是一个好办法,因为这意味着要检查头,发送请求时可以伪造头

对于身份验证,如果您想使用不同的方法,最好的办法可能是使用不同的身份验证策略,然后逐个尝试。如果第一个失败,则运行下一个,以此类推。 实现这一点的一种常见方法是添加一个身份验证中间件,该中间件尝试每种可用的策略对客户端进行身份验证,如果不能,则停止请求


这确实意味着,即使您希望您的策略A仅适用于浏览器,它也可以用于从移动应用程序登录,但无法防止这种情况,而且无论如何,它也不应导致任何安全问题。如果是这样的话,问题可能出在其他地方。

我发现使用

你需要做什么

  • 创建数据库模式
  • 为每个表创建活动模型
  • 为你的每一个模型做准备
  • 使用库进行身份验证
  • 如果需要,请使用Yii 2.0

  • 您可以为桌面客户端创建API/v1,为移动客户端创建API/v2等API模块,以便轻松分离。签出以分离API版本,或者如果您不想手动执行所有操作,只需克隆包含所有主要功能的组件即可。

    我发现使用

    你需要做什么

  • 创建数据库模式
  • 为每个表创建活动模型
  • 为你的每一个模型做准备
  • 使用库进行身份验证
  • 如果需要,请使用Yii 2.0

  • 您可以为桌面客户端创建API/v1,为移动客户端创建API/v2等API模块,以便轻松分离。签出以分离API版本,或者如果您不想手动执行所有操作,只需克隆包含所有主要功能的API即可。

    我从未听说过API与桌面和移动登录不同。用户只发送身份验证数据,不管他们的平台是什么,如果他们有有效的凭证,服务器会给他们一个cookie。我从来没有听说过API与桌面和移动登录不同。用户只发送身份验证数据,不管他们的平台是什么,如果他们有有效的凭证,服务器会给他们一个cookie。