HTTP API 设计指南 前言 这篇指南介绍描述了 HTTP+JSON API 的一种设计模式,最初摘录整理自 Heroku 平台的 API 设计指引 Heroku 平台 API 指引。 这篇指南除了详细介绍现有的 API 外,Heroku 将来新加入的内部 API 也会符合这种设计模式,我们希望非 Heroku 员工的API设计者也能感兴趣。 我们的目标是保持一致性,专注业务逻辑同时避免过度设计。我们一直试图找出一种良好的、一致的、显而易见的 API 设计方法,而并不是所谓的"最终/理想模式"。 我们假设你熟悉基本的 HTTP+JSON API 设计方法,所以本篇指南并不包含所有的 API 设计基础。 强制头信息 Accept 中提供版本号 制定版本并在版本之间平缓过渡对于设计和维护一套API是个巨大的挑战。所以,最好在设计之初就使用一些方法来预防可能会遇到的问题。
在之前《应对变化》[1]中提到模块之间合的策略:缩小依赖范围,API是两个模块间唯一的联结点 ? 怎么才是一个好的API设计呢? 设计成: systemB.receive(long userId,String username,Object data); 一切都是行云流水,大家都很happy,如期发布上线 爱情总是在转角处遇到,上线完 系统A:太麻烦了,你自己取了,想怎么控制就怎么控制 系统B:你是不爱我了 系统A:你怎么就不理解我呢 ---- 温习一下一个好的API设计要求: 缩小依赖范围,就是要精简API;API要稳定得站在需求角度 因为任何一项知识的变化都会导致双方变化2.API也要高内聚,不应强迫API的客户依赖不需要的东西3.站在what角度;而不是how,怎么技术实现的角度 上面示例的问题就在系统B接受数据api: systemB.receive ,但回头复盘,发现了很多理论缺乏,惯性思维使然造成的不合理,难维护,难扩展的设计 由此看出,日常的CRUD并不是没有技术含量,而是我们有没有深刻认知 References [1] 《应对变化》: http
10万模板,1亿优质图库,正版商用授权,涵盖电商、banner海报、新媒体配图、教育培训海报、H5等各种场景
关于后台登录步骤的流程: 1. 后台登录控制器:RegisterController 1. GetImageValidate()方法说明: 登录页面,加载验证码(防止暴力破解)的时候,需要一个Key在服务器端保存验证码生成的数字值,这个时候在Smart1Controller控制器中 用户登录了,用户请求某些方法是否有权限的验证; 3. 对没有设置权限的方法,做直接通过验证的处理; 4. 如果用户没有登录,没有权限分别做不同的返回状态值处理返回; 3. ,则在MemberCache中,设置用户的缓存时间,和缓存键,GetKey()方 法设置缓存key;并返回用户的登录信息; 4.
二、流程图这个流程图包含了登录系统设计的全流程,也是当时模拟的时候一步步走的流程图片简要的用文字梳理一下登录流程首先进入程序,需要进行判断登录缓存是否存在且有效,有效直接跳转 MainActivity, (稍后会进行讲述)图片三、主要设计部分分析由于个人开发限制,下列登录方式的方式以QQ,邮箱,统一账号登录为例1.登录缓存设计统一登录行为是这个系统设计的核心,所以这部分的设计以简单和信息最小化为原则进行设计 activity进行处理,需要完成两项任务- 本地数据的合法性检验(可以减少服务端的负担)- 发送本地的账号密码/邮箱验证码进行服务端那边的验证四、三种登录方式具体设计1.第三方登录设计这里以 QQ 举例 id可以进行账号密码登录,所以这里没有设计账号注册系统了,主要考虑到其实大部分注册也需要邮箱手机号验证,目前也有好多平台没有自己的账号注册系统,不过自己可以给自己创建一些测试的账号便于登录统一账号设计 ,毕竟重置密码还是需要验证码的五、总结这次的登录流程的设计受益匪浅,统一的登录行为是设计中最核心的部分,可以进行扩展,同时便于进行管理,不过仍然有不足的地方,例如异地登录方面的考虑和设计,防机器人等的设计六
1.1 什么是API网关 API网关可以看做系统与外界联通的入口,我们可以在网关进行处理一些非业务逻辑的逻辑,比如权限验证,监控,缓存,请求路由等等。 1.2 为什么需要API网关 RPC协议转成HTTP。 1.3 统一API网关 统一的API网关不仅有API网关的所有的特点,还有下面几个好处: 统一技术组件升级 在公司中如果有某个技术组件需要升级,那么是需要和每个业务线沟通,通常几个月都搞不定。 在Netflix Zuul中也应用了这种模式,如下图所示: image 这种模式在网关的设计中我们可以借鉴到自己的网关设计: preFilters:前置过滤器,用来处理一些公共的业务,比如统一鉴权,统一限流 1.基本流控:基于API的QPS做限流。2.运营流控:支持APP流量包,APP+API+USER的流控33.大促流控:APP访问API的权重流控。
go-gin-api 它是一个对新手很友好的 Go 项目,如果你没有项目经验,完全可以用它来练手,支持 WEB 界面一键安装,做到开箱即用。 它是基于 Gin 进行模块化设计的 API 框架,封装了常用的功能,使用简单,致力于进行快速的业务研发,同时增加了更多限制,约束项目组开发成员,规避混乱无序及自由随意的编码。 项目地址:https://github.com/xinliangnote/go-gin-api 登录篇 (一) 了解身份识别与访问管理; 简述认证、授权、鉴权、权限管理; 认证之登录认证; 认证之接口认证
彩虹聚合登录中转API是一个可以实现中转QQ、微信、支付宝、微博、百度等平台的快捷登录接口。有多应用管理、域名限制、账号记录、登录记录功能。 彩虹聚合登录中转API就是为了解决多个网站需要接入快捷登录,需要多次申请的问题。 目前版本只实现了QQ的中转登录,后期会实现其他平台的中转登录。 需要先搭建一个Discuz论坛(下载地址),在后台开启QQ互联,确保前台有显示QQ快捷登录按钮,或者其他论坛程序去申请。申请成功之后再把域名换绑定到本程序。
如不了解jwt,请戳:程序猿DD,什么是jwt 下面我给出一个jwt实现单点登录的流程: 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143586.html原文链接
登录的处理流程: 1、登录页面提交用户名密码。 2、登录成功后生成token。Token相当于原来的jsessionid,字符串,可以使用uuid。 3、把用户信息保存到redis。 9、登录成功。
如何设计错误码? 如果做版本控制? 版本信息写进请求头 url路由 框架选用? api路由解决出现post请求报错问题 默认走的是web.php路由,而web.php在laravel中是有csrf保护的,为了防止伪造跨站请求csrf,post请求必须带上token,具体操作见文档的
这导致API构架的流行,甚至出现"API First"的设计思想。RESTful API是目前比较成熟的一套互联网应用程序的API设计理论。 今天,我将介绍RESTful API的设计细节,探讨如何设计一套合理、好用的API。我的主要参考了两篇文章(1,2)。 一、协议 API与用户的通信协议,总是使用HTTPs协议。 举例来说,有一个API提供动物园(zoo)的信息,还包括各种动物和雇员的信息,则它的路径应该设计成下面这样。 animal_type_id=1:指定筛选条件 参数的设计允许存在冗余,即允许API路径和URL参数偶尔有重复。比如,GET /zoo/ID/animals 与 GET /animals? Hypermedia API的设计被称为HATEOAS。Github的API就是这种设计,访问api.github.com会得到一个所有可用API的网址列表。
订阅本站 近期学习了Go语言,跟着七米在学习,学习过程中了解到了 API 的一个设计规范,也就是本文要讲的 Restful API 设计模式,现在互联网处在前后端分离的阶段,API 的书写及规范化是非常重要的 ,针对于 API 中 Restful API 中设计比较规范的是 Github API,可以直接访问他们的 https://api.github.com 直接查看 Github 针对与公共接口的链接及使用方法 1、使用 HTTPS 协议 这个协议使用本身与这个 API 设计标准没有什么直接联系,使用 HTTPS 协议主要目的是将用户客户端与 API 服务器链接过程中保证其数据的安全性 ?。 即使我们遵循了上面提到的所有规范,设计的 API 非常优雅,用户还是不知道怎么使用我们的 API。最后一步,但非常重要的一步是:为你的 API 编写优秀的文档。 参考资料 RESTful API 设计指南 – 阮一峰 跟着 Github 学习 Restful HTTP API 设计 REST API Tutorial Representational State
良好设计的API = 快乐的程序员 ?。 应用程序接口(API)是一种接口,它让应用程序可以轻松地使用另一个应用程序的数据和资源,API 对于一个产品或公司的成功至关重要。 如果没有它,你将不得不设计和开发自己的地图数据库。这样的话,在地图上显示一个位置需要花费多少时间? 为什么要使用 API? 在大多数实际场景中,数据模型 已经存在,但由于我们将讨论 API 设计最佳实践,我将从头开始说起。 数据建模与结构化 以 API 为中心对您的数据进行建模,是设计易于创建、维护和更新 API 的第一步 在设计 API 时,尽量考虑使用通用的术语,而不是使用内部的复杂业务术语,因为这些术语在公司外可能不为人所知 这些就是设计 API 的最佳实践。它让你的 API 更健壮、简洁并易于与其他应用程序集成。 请记住。 良好设计的API = 快乐的程序员 ?。
网站的前后端通信,往往会有异步请求,这时应该怎么设计 API? 我最近读到一篇文章,作者介绍了他的做法,设计得很精细,我觉得值得借鉴,可以当作异步 API 的标准设计。 一、同步 API 为了便于比较,先看看同步 API 的设计。下面是一个很简单的例子。 客户端发出一个请求,要求创建资源。 POST https://api.service.io/stars name='Death Star' 服务器回应 201。 GET https://api.service.io/queue/12345 服务器回应 200。 DELETE https://api.service.io/queue/12345 服务器回应 204。
API的特点: 1、因为是非开放性的,所以所有的接口都是封闭的,只对公司内部的产品有效; 2、因为是非开放性的,所以OAuth那套协议是行不通的,因为没有中间用户的授权过程; 3、接口分为需要用户登录才能访问的和不需要用户登录就可访问的 加密密钥'为私有的加密密钥,手机端需要在服务端注册一个“接口使用者”账号后,系统会分配一个账号及密码,数据表设计参考如下: 字段名及字段类型 client_id varchar(20) 客户端ID client_secret 如果接口需要用户登录,其访问流程如下: 1、用户提交“用户名”和“密码”,实现登录(条件允许,这一步最好走https); 2、登录成功后,服务端返回一个user_token,生成规则参考如下: user_token = md5('用户的uid' + 'Unix时间戳') = etye0fgkgk4ca2ttdsl0ae9a5dd77471fgf 服务端用数据表维护user_token的状态,表设计如下: 字段名及字段类型如下 varchar(36) 用户token expire_time int 过期时间(Unix时间戳) 服务端生成user_token后,返回给客户端(自己存储),客户端每次接口请求时,如果接口需要用户登录才能访问
看上去就两三行,但这个函数能应对我此处的需求:查询我的关注企业/收藏资讯/收藏产品列表等
layout_marginBottom="60dp" android:background="@drawable/shape_button" android:text="账号登录
这导致API构架的流行,甚至出现"API First"的设计思想。RESTful API是目前比较成熟的一套互联网应用程序的API设计理论。 今天,我将介绍RESTful API的设计细节,探讨如何设计一套合理、好用的API。我的主要参考了两篇文章(1,2)。 ? 一、协议 API与用户的通信协议,总是使用HTTPs协议。 举例来说,有一个API提供动物园(zoo)的信息,还包括各种动物和雇员的信息,则它的路径应该设计成下面这样。 animal_type_id=1:指定筛选条件 参数的设计允许存在冗余,即允许API路径和URL参数偶尔有重复。比如,GET /zoo/ID/animals 与 GET /animals? Hypermedia API的设计被称为HATEOAS。Github的API就是这种设计,访问api.github.com会得到一个所有可用API的网址列表。
一、协议 API与用户的通信协议,总是使用HTTP/HTTPS协议。 二、域名路径 应该尽量将API部署在专用域名之下。 https://api.example.com 如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下。 https://example.org/api/ 三、版本(Versioning) 应该将API的版本号放入URL。 举例来说,有一个API提供动物园(zoo)的信息,还包括各种动物和雇员的信息,则它的路径应该设计成下面这样。 https://api.example.com/v1/zoos https://api.example.com/v1/animals https://api.example.com/v1/employees
云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。 腾讯云服务器(CVM)为您提供安全可靠的弹性云计算服务。只需几分钟,您就可以在云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。
扫码关注腾讯云开发者
领取腾讯云代金券