首页 / 知识
关于api设计:如何构建良好的(网络)API
2023-04-13 13:55:00

How should I build a good (web) API我将为网络应用程序构建API,我对人们可以建议的良好做法感兴趣。 我已经在计划对其进行版本控制(版本1只能控制系统的某些方面,版本2可以控制更多功能,但这可能需要更改身份验证的执行方式,而该方式与版本1不兼容),并且 身份验证将不同于人们用于登录的标准用户名/密码(如果有人确实使用了恶意工具,则无论api允许什么,它都不会对其进行完全模拟)。 是否有人有进一步的想法,或者您使用过具有特别好的API的网站示例? 阅读RESTful Web服务一书,该书为您提供了有关如何在实践中使用REST的很好的概述,并以足够的信心快速入门到现在开始的速度。这比仅查看现有API更为有用,因为它还讨论了设计选择和折衷方案。 1)将版本号直接烘焙到URL中,而不是将其作为参数传递,因为这样您就可以完全自由地更改每个版本凹凸的API名称空间的组织。 2)保持您的URL重写规则(如果有)尽可能简单/简洁(但不要更简单),同时使您的URL尽可能美丽(但不要更多)。 3)始终寻找可以为每个响应找到的最佳HTTP状态代码(例如,不要忘记202和207)。 4)实施法西斯参数验证逻辑和信息错误消息。 5)在适当的地方使用HTTP请求标头代替参数(例如,如Accept,以允许客户端指定所需的响应数据格式)。 6)以这样的方式组织您的"名词",即将不同客户受众使用的URL分隔在URL树的"根"附近(如果需要,这可以更轻松地为这些不同受众实施不同的身份验证机制,甚至映射URL树的不同部分连接到不同的服务器)。 7)如果您要在与API相同的域之外提供常规网页并使用相同的身份验证凭据,请在API请求中要求X-Requested-With标头,以避免XSRF漏洞。 我来看看经过验证的API: 关于这些API是否"良好"存在很多争论,但我认为它们的成功已得到证明,并且它们都易于使用。 使用REST。 RESTful Web服务体系结构易于实现,并使用HTTP的优势和语义来实现预期的功能。就像网络本身一样,它是面向资源的。 Amazon Web Services,Google和许多其他公司提供REST API来与其产品进行交互。 使用REST。 阅读API标准,或复制其中一种流行的想法。 验证用户时要小心。 开始非常非常简单。 建立一个使用您的API(即使它没有用)来检查一切是否正常的网站。也许您可以构建该网站的移动版本,或者强迫您深入使用该API。 |
最新内容
相关内容
Python网络编程调用接收数据的三种
Python网络编程调用接收数据的三种方法,数据,代码,基础,通用,通讯,服务,网络,培训,方法,报文,最近在使用python进行网络编程开发一个通用的tc网络功能对于Python的意义
网络功能对于Python的意义,网络,项目,标准,工作,通信,培训,管理,数据,位置,功能,现在,网络功能的强弱很大程度上决定了一个语言的成功与否。从python socket网络编程之粘包问题
python socket网络编程之粘包问题详解,数据,通信,服务,连续,信息,地址,时间,单位,培训,消息,粘包问题详情1、只有TCP有粘包现象,UDP永远不会粘Python实现BP神经网络
Python实现BP神经网络,传播,工具,培训,神经网络,定义,方法,矩阵,神经元,函数,形式,首先实现几个工具函数:defrand(a,b):return(b-a)*random.raPython可以做桌面应用程序吗
Python可以做桌面应用程序吗,平台,系统,较大,标准,培训,界面,桌面,文档,入门,开发者,python可以做桌面应用程序!目前比较主流的几个GUI平台:1python网络编程及前端常见问题
python网络编程及前端常见问题,数据,服务,分析,培训,状态,前端,区别,服务器,常见问题,上面,当我们学习Python时,需要掌握的的知识有很多,除了有如何将反射添加到C ++应用程序?
如何将反射添加到C ++应用程序?,如何将反射添加到C ++应用程序?,类型,原生,托管,的是,How can I add reflection to a C++ application如何在ASP.NET Web应用程序上使用
如何在ASP.NET Web应用程序上使用表单身份验证最佳地处理基于角色的权限?,如何在ASP.NET Web应用程序上使用表单身份验证最佳地处理您将如何在 Ruby on Rails 应用程
您将如何在 Ruby on Rails 应用程序中使用 rSpec 测试观察者?,您将如何在 Ruby on Rails 应用程序中使用 rSpec 测试观察者?,应用程序创建网络爬虫时的主要考虑因素是什
创建网络爬虫时的主要考虑因素是什么?,创建网络爬虫时的主要考虑因素是什么?,网络,自定义,爬虫,知之甚少,What are the key considerat如何使调试 ASP.NET Sharepoint 应
如何使调试 ASP.NET Sharepoint 应用程序的过程更耗时?,如何使调试 ASP.NET Sharepoint 应用程序的过程更耗时?,模式,调试,启动,服务关于.net:使用System.DirectoryServ
关于.net:使用System.DirectoryServices对域用户进行身份验证,关于.net:使用System.DirectoryServices对域用户进行身份验证,编程,验