Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.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
Php 用于web门户的类似ebay的API界面_Php_Api_Paypal - Fatal编程技术网

Php 用于web门户的类似ebay的API界面

Php 用于web门户的类似ebay的API界面,php,api,paypal,Php,Api,Paypal,我们为图形作业开发了一个B2B门户网站,类似于照相机就绪艺术(www.camerareadyart.com)。它的目标是希望将位图转换为矢量图形、徽标设计和一般图像处理(如将黑白图像着色为彩色等)的人 我们想添加一个工具,这样人们(我们的客户)就可以使用我们提供的一组API直接从他们的站点发布他们的作品,而不必访问我们的站点来发布他们的作品 到目前为止,我从未做过这样的事情,所以我不知道如何实现这样的事情。我还想知道我们如何实现安全性,以便只有获得授权的人才能发布他们的工作 有谁能告诉我怎么做这

我们为图形作业开发了一个B2B门户网站,类似于照相机就绪艺术(www.camerareadyart.com)。它的目标是希望将位图转换为矢量图形、徽标设计和一般图像处理(如将黑白图像着色为彩色等)的人

我们想添加一个工具,这样人们(我们的客户)就可以使用我们提供的一组API直接从他们的站点发布他们的作品,而不必访问我们的站点来发布他们的作品

到目前为止,我从未做过这样的事情,所以我不知道如何实现这样的事情。我还想知道我们如何实现安全性,以便只有获得授权的人才能发布他们的工作


有谁能告诉我怎么做这样的事情吗

这个问题涉及的范围很广,我怀疑任何一个答案都不能涵盖细节。我能做的就是根据我所犯的错误提供一些起点

在您自己的API之上构建
不要在现有系统中添加API功能。这样做将:

  • 导致额外的测试负载(您必须独立测试应用程序和API)
  • 导致总体维护成本增加
  • 导致API的质量比您希望提供的质量差
您的总体目标应该是首先构建API,然后在自己的API之上构建应用程序。这样做有以下好处:

  • API的测试是在测试应用程序时进行的
  • 您不会“忘记”添加任何必需的API方法
你的应用程序和你的应用程序逻辑(API)在逻辑上是分开的——在等式的每一边做什么以及它负责什么方面,它们之间会有一个明确的分离。这将有助于指导发展。这还允许您在需要时非常轻松地将应用程序和API放在不同的机器上

使用自己的API是非常重要的一点。API的设计最初是次优的,只有通过自己使用它,您才能以高效的方式向人们提供实际需要的功能

您将得到一个大致如下所示的系统:

-------------                          -------------
|           |                          |           |
| Your APP  | <= HTTP communication => | Your API  |
|           |                          |           |
-------------                          -------------
类似于位图到矢量的转换:

https://api.camerareadyart.com/bitmap/toVector/
设计响应
当有人从您的某个URL获取数据或向其发布数据时,会发生什么情况?如何处理错误,如何处理异常?回答采取什么形式

我不能告诉你在这里该做什么。就我个人而言,我更喜欢尽可能地将事物映射到HTTP,然后仅在需要时才进行映射

例如,如果传入的请求被接受并被处理,但在内部遇到错误,我将发出500状态响应。同样,如果给定的API方法需要尚未提供的身份验证,我可能会发出403。利用现有的HTTP特性可以防止您不得不重新发明某些东西

使用HTTP的现有特性
除了明智地使用HTTP状态代码外,在推出您自己的解决方案之前,请确保查找仅用于执行某些操作的HTTP方法

想让用户指定响应格式应该是XML还是JSON?使用HTTP接受头

要将客户端重新定向到其他URL以获取请求的结果吗?使用HTTP位置头

HTTP有许多特性,它们已经处理了许多您可能想做的事情。使用它们

安全性
这里需要解决两个一般性问题:验证用户,以及确定给定用户可以执行哪些操作

安全性:身份验证
用户需要在他们的请求中指定他们是谁

spring的第一个解决方案是允许用户指定用户名和密码,可能与他们访问应用程序时使用的用户名和密码相同。从表面上看,这似乎是个好主意,但并不理想

用户最终会将自己的用户名和密码烘焙到自己的应用程序中。不可避免地,一个用户会忘记他们的密码,并会更改密码,以便他们可以愉快地访问您的应用程序,并在此过程中破坏自己的应用程序

更好的选择是用户提供一个身份验证令牌,它本质上是用户唯一的一个值,就像用户名和密码合并在一起一样

这允许您从逻辑上将用户名和密码与对API的访问分开。用户可以随时更改应用程序的用户名和/或密码,而无需中断对API的访问

用户还可以拥有多个API令牌,每个令牌具有不同的访问级别,允许用户安全地向第三方服务分发API令牌

安全性:访问控制
就外部世界而言,您的API是一组URL。根据定义,每个URL都是唯一的,并执行唯一的任务。基于这些概念的访问控制机制是一个很好的起点

我更喜欢为每个令牌保留一个允许令牌访问的URL列表。当一个给定的令牌被用来访问一个URL时,很难判断哪个URL正在被访问,以及它是否在令牌允许的URL列表中

如果您明智地选择一组URL,其中每个URL执行一个唯一的操作,则此过程将为您提供最高级的访问控制


为了提供更好的控制级别,您可能还需要指定每个允许令牌访问的URL,允许它们使用哪些查询参数。

您显然需要设计后端Web服务并使其正常工作。但是,所有附加功能(安全性、节流、OAuth密钥管理、订户门户、用于尝试API的交互式控制台等)都是一组相当标准的功能,您可能不应该开发这些功能
https://api.camerareadyart.com/bitmap/toVector/