2015-05-06 69 views
1

facebook API的googlemaps API是公共的,可以被任何人使用。所以我的问题是如何让REST API专用,以便只能通过选择一个用户来使用它。例如,您只为您的pwn AngularJS应用制作Rest API。这样做是否很常见,对此,现实世界的方法是什么?在这个问题上,REST API和REST Web Services有什么区别?如何使REST API保密?

回答

3

如果我要编写一个私有的RESTful API,那么我可能不会费心使它成为RESTful。

通过将REST API私有化,您正在失去这种架构风格的主要优势之一。像这样实现一个API很困难,但作为回报,您可以轻松获得可扩展性,并且API的客户可以编写不会因未来更改而中断的客户端(只要您遵循HATEOAS并使用定义良好的格式)。

如果您可以选择同时控制服务及其所有客户端,那么放弃由RESTful架构施加的某些约束可能实际上是一个好主意。

只要您遵守协议语义,您应该可以使用简单的API来为HTTP上的JSON服务。

换句话说,你可以实现一个符合2级API的要求,由Richardson Maturity Model

描述因为你将不会被充分利用由3级API提供的优势服务,更不用说一个真正的RESTful API,实施一个可以证明是不必要的努力。

我在my answer to a programmers.stackexchange question中对这些设计考虑进行了更全面的描述。你也可以在这里找到一些有用的参考资料。

+1

嗯,所以在现实世界的情况下,例如,如果公司为那里的web应用程序和移动应用程序提供api。如果有人使用他们的API制作出更好的网络应用程序,那么所有用户都会使用这个API,而不是由提供API的公司提供的客户端,这是不需要的,因为公司会失去收入? – bambuseq

+0

@bambuseq这是你问的一些非常宽泛的问题。这取决于公司计划如何通过API获利。公司是否计划通过出售移动应用程序或在网站上展示广告来赚钱? API的使用是免费还是付费服务?这些是有意义的一些考虑。但是,它们不仅关注REST API,而且与业务模型相比,它们与技术或体系结构一样多(或可能更多)。 – toniedzwiedz

0

您可以通过要求某些授权/验证来使API使用API​​(例如简单的API密钥)来使API私密。

REST API与REST Web Services?

好吧,就这样说吧。 REST Web服务 REST API。 Web服务是一组按目的统一的API。