我目前正在开发一个非常简单的Web服务,并认为我可以为此编写API,所以当我决定在新平台上扩展它时,我只需要编译解析器应用程序.也就是说,API不适合其他开发人员,但我不会限制访问它,所以任何人都可以在此基础上构建.
然后我想我甚至可以通过这个API运行网站本身,原因有很多,比如带宽消耗较低(浏览器生成的HTML)和客户端缓存.作为AJAX的重量似乎是一个更大的理由.
布局如下所示:
Server (database, programming logic) | API (handles user reads/writes) | Client application (the website, browser extensions, desktop app, mobile apps) | Client cache (further reduces server reads)
介绍之后我的问题是:
这是API的良好用途
通过API运行整个网站是一个好主意
使用API时我有哪些安全身份验证选择(出于某种原因我不想使用HTTPS)
编辑
其他问题:
我没有考虑过任何其他方法
使用这种方法可能产生的一些潜在问题我没有考虑到
Neville Kuyt.. 17
首先要做的事情.
询问设计(或实际上是什么)是否"好"取决于你如何定义"善".典型的标准是性能,可维护性,可伸缩性,可测试性,可重用性等.如果您可以添加一些上下文,这将有所帮助.
话说回来...
这是API的良好用途
将业务逻辑与表示逻辑和数据持久性逻辑分离出来通常是个好主意.你的设计就是这样,因此我很乐意将其称为"好".你可能会看一个正式的设计模式来做到这一点 - 模型视图控制器可能是当前的默认设置,尤其是.用于Web应用程序.
通过API运行整个网站是一个好主意
那么,这取决于应用程序.完全可以在Javascript/Ajax中编写应用程序,但是存在浏览器兼容性问题(尤其是旧版浏览器),并且您必须为用户通常期望的Web应用程序提供支持,例如深层链接和搜索引擎友好性.如果你有一个考虑周全的API,你可以在服务器上进行一些页面生成,如果这样可以更容易.
使用API时我有哪些安全身份验证选择(出于某种原因我不想使用HTTPS)
棘手的 - 使用这种应用程序,您必须区分对用户进行身份验证和验证应用程序.对于前者,OpenID或OAuth可能是主要的解决方案; 对于后者,请查看Google如何要求您注册使用他们的Maps API.
在大多数Web应用程序中,HTTPS不用于身份验证(证明当前用户是他们所说的人),而是用于加密.这两者是相关的,但绝不等同......
我没有考虑过任何其他方法
也许这更符合问题5 - 但根据我的经验,API设计是一项相当深奥的技能 - API设计师很难能够准确预测API的客户端将需要什么.我会认真考虑在没有API的情况下为您的第一个客户端平台编写应用程序,并在以后分解API - 这样,您只需在第一个版本中构建所需的内容.
使用这种方法可能产生的一些潜在问题我没有考虑到
版本控制与API有很大关系 - 一旦您创建了一个界面,您几乎永远不会更改它,尤其是对于您无法控制的多个客户端.我将构建版本作为一流的概念 - 使用RESTful API,您可以将其作为URL的一部分.
首先要做的事情.
询问设计(或实际上是什么)是否"好"取决于你如何定义"善".典型的标准是性能,可维护性,可伸缩性,可测试性,可重用性等.如果您可以添加一些上下文,这将有所帮助.
话说回来...
这是API的良好用途
将业务逻辑与表示逻辑和数据持久性逻辑分离出来通常是个好主意.你的设计就是这样,因此我很乐意将其称为"好".你可能会看一个正式的设计模式来做到这一点 - 模型视图控制器可能是当前的默认设置,尤其是.用于Web应用程序.
通过API运行整个网站是一个好主意
那么,这取决于应用程序.完全可以在Javascript/Ajax中编写应用程序,但是存在浏览器兼容性问题(尤其是旧版浏览器),并且您必须为用户通常期望的Web应用程序提供支持,例如深层链接和搜索引擎友好性.如果你有一个考虑周全的API,你可以在服务器上进行一些页面生成,如果这样可以更容易.
使用API时我有哪些安全身份验证选择(出于某种原因我不想使用HTTPS)
棘手的 - 使用这种应用程序,您必须区分对用户进行身份验证和验证应用程序.对于前者,OpenID或OAuth可能是主要的解决方案; 对于后者,请查看Google如何要求您注册使用他们的Maps API.
在大多数Web应用程序中,HTTPS不用于身份验证(证明当前用户是他们所说的人),而是用于加密.这两者是相关的,但绝不等同......
我没有考虑过任何其他方法
也许这更符合问题5 - 但根据我的经验,API设计是一项相当深奥的技能 - API设计师很难能够准确预测API的客户端将需要什么.我会认真考虑在没有API的情况下为您的第一个客户端平台编写应用程序,并在以后分解API - 这样,您只需在第一个版本中构建所需的内容.
使用这种方法可能产生的一些潜在问题我没有考虑到
版本控制与API有很大关系 - 一旦您创建了一个界面,您几乎永远不会更改它,尤其是对于您无法控制的多个客户端.我将构建版本作为一流的概念 - 使用RESTful API,您可以将其作为URL的一部分.