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