.NET WEB API关键过程 思维导图
- 背景说明
近期在去面试的过程中,被问及有关WEB API的一些特性,一时竟不知该如何回答,故根据自己已知的知识,加上网上搜索的,详细列举了一下,期望对WEB API有一个比较开阔和全面的认知。
- 关键要素
- 接口规范
接口规范定义了在API访问的过程中,数据交互约定以什么样的方式进行。下面是我所了解的几种接口规范:
- 1.1.RESTful
1.1.1.字义解释
▣ REST(representational state transfer),直译过来是“表述性状态传输”,至于ful,百度翻译是“满满的”、“充满...的”。这里所说的“state”,就是HTTP请求当中的 GET、PUT、POST 、DELETE,表述了对资源的处理意向。1.1.2.规范详情
▣ 参考RESTful 架构详解- 1.2.OpenAPI
1.2.1.字义解释
▣ OpenAPI从字义上解释,是开放API,也就是说是开放给别人看的,所以接口参数具有可阅读性,能够生成可阅读的文档。它也具体到了业务层面的参数定义规范。1.2.2.广义解释
▣ 狭义的OpenAPI是Swagger所定义的一套接口参数规范,可以快速输出接口文档,目前的最新版本是3.0;广义的OpenAPI,我认为只要有企业规划了开放式的API,并约定了参数交互规则,并形成文档的持续更新方法,就是OpenAPI。1.2.3.拓展资料
▣ Swagger 2与OpenAPI 3
▣ 腾讯OpenAPI接口文档
▣ 腾讯云直播API接口文档
▣ 淘宝开放平台API文档
▣ 阿里巴巴开放平台API文档
▣ 百度地图Javascript API开放平台- 1.3.RPC
1.1.1.字义解释
▣ RPC(Romote Procedure Call),远程过程调用,允许一台计算机程序远程调用另外一台计算机的子程序,不用关心底层网络通信。它在socket的基础上实现,也涉及到程序和部署架构层面的具体落实,所以不单是一种访问规范,更是一种架构设计。1.1.2.架构详情
▣ 参考RPC - 鉴权方式
鉴权机制,是保护接口和数据安全的一道屏障,只有被授权、并且握有合法钥匙(令牌)的,才能自由出入。
- 1.1.IdentityServer4
1.1.1.用途介绍
▣ IdentityServer4 是为ASP.NET Core 2.系列量身打造的一款基于 OpenID Connect 和 OAuth 2.0 认证框架。1.1.2.参考资料
▣ IdentityServer4中文文档- 1.2.Jwt(Json web token)
1.2.1.用途介绍
▣ JWT 是一个开放标准(RFC 7519),它定义了一种用于简洁,自包含的用于通信双方之间以 JSON 对象的形式安全传递信息的方法。JWT 可以使用 HMAC 算法或者是 RSA 的公钥密钥对进行签名。它由Header+Payload+Signature三个部分组成。1.2.2.参考资料
▣ 前后端分离之JWT用户认证
▣ JWT认证原理及使用- 1.3.OAuth(Open Authorization)
1.3.1.用途介绍
▣ 首先,它是授权认证;其次,它是开放式的;第三,它简单而又安全。典型的例子就是微信或者QQ的授权登录,无论访问什么资源之前,先授权登录一下。1.3.2.参考资料
▣ 详细的接入流程可以参考 理解OAuth 2.0 - 关键对象
在面向对象的程序设计(OOP),所常用的一些设计模式当中,专注于对象的创建、对象的结构和对象的行为模式,在面向WEB API的一些关键对象当中,这三个方面同样值得关注。在Visual Studio 2019的版本当中,对对象的关键属性,作了一个标星,这使得一些常用的属性会被排在前面,在输入时可以快速定位,同时标星的属性,也更值得关注。
- 1.1.上下文对象(Context)
1.1.1.用途介绍
▣ 在WEB API 整个后台处理过程当中,很多地方都使用了上下文Context,比如HttpContext、ControllerContext、HttpActionContext等,里面不仅携带了数据,还包含了发起人的IP地址、Uri请求对象、浏览器信息、客户端保留的Cookie、上文中累积的异常信息等等。所谓的上下文,按我理解,就是上面用到了,到我这里还要用,我还要转交给下面用。- 1.2.过滤器对象(Filter)
1.2.1.用途介绍
▣ 过滤器对象,是面向切面编程(AOP)概念中的一个特别重要的实现,主要应用在授权验证、数据流的输入和输出过滤、异常处理、日志收集等方面。- 1.3.控制器对象(Controller)
1.3.1.使用说明
▣ 前段时间有人问我,Controller和ApiController的区别在哪里?我一时竟不知道怎么样回答,这大概应该归咎于我平时懒于作总结的缘故。
▣ Controller 适用于基于Razor cshtml前后端混合的开发模式,也能从上下文中找到Session;而ApiController适合于前后端分离的开发模式,一般需要植入鉴权才能保证接口和数据安全。另外ApiController 的默认路由规则是api/{controller}/{action}/{id},前面多了个“api/”的路径。- 1.4.缓存对象(Session、Cookie、Cache)
1.4.1.用途说明
▣ 这三个不作过多赘述,Session是一个网站很重要的存储,如果要使它的可靠性和稳定性更好的话,使用Redis驱动它,是一个不错的方案。 - 生命周期
生命周期是一个很复杂的概念,后面有时间再专门拎出来归纳和学习。
- 接口工具
- 1.1.Fiddler
1.1.1.用途介绍
▣ 可以进行数据抓包,也能模拟请求,它脱离浏览器,能够跟踪桌面应用和手机APP的请求,非常好用。- 1.2.Postman
1.2.1.用途介绍
▣ 可以作为谷歌浏览器插件使用,也是用来模拟发送请求的。- 1.3.Swagger
1.3.1.使用说明
▣ 定义接口规范,生成接口文档。1.3.2.相关文档
▣ Swagger介绍及使用- 1.4.YApi
1.4.1.使用说明
▣ 强大的接口管理平台。1.4.2.相关文档
▣ YApi教程
▣ 内网搭建YApi接口管理平台
在客户端发送一个请求,到服务端接收并处理请求,然后将数据返回,这样一个看似简单的过程中,究竟有哪些要素是我需要去留心的呢?
我在整理的过程当中,发现了这样一些基本要素,是需要去特别留心:
1. 接口规范
2. 鉴权方式
3. 关键对象
4. 生命周期
5. 接口工具
- 思维导图

.NET WEB API关键过程 思维导图的更多相关文章
- Java Web面试题整理(思维导图)
1,动态网站技术有哪些? 2,一般的Web架构是指BS 还是CS,BS架构是什么咚咚? 3,Web应用程序的流程,即把一个URL串输入地址栏后发生写什么? 4,说一说Servlet生命周期? 5,在W ...
- web前端开发初学者必看的学习路线(附思维导图)
很多同学想学习WEB前端开发,虽然互联网有很多的教程.网站.书籍,可是却又不知从何开始如何选取.看完网友高等游民白乌鸦无私分享的原标题为<写给同事的前端学习路线>这篇文章,相信你会有所收获 ...
- 【干货】jsMind思维导图整合Easyui的右键菜单
原材料: 1.web版本的JavaScript思维导图(BSD开源协议)[戳这里去官网]. 2.easyui最新版[戳这里去官网]. 这里是原本的jsMind: 在线测试地址 :http://hizz ...
- 用思维导图软件iMindMap来提高记忆
虽说人的大脑是强大的存储器,但是我们终究没有挖掘出大脑全部的潜能,在记忆时或许因为方式.或许是干扰因素都能够影响我们的记忆力,致使有心无力,快来让思维导图来拯救你的记忆吧. 记忆是经验的关键,思维导图 ...
- Java,面试题,简历,Linux,大数据,常用开发工具类,API文档,电子书,各种思维导图资源,百度网盘资源,BBS论坛系统 ERP管理系统 OA办公自动化管理系统 车辆管理系统 各种后台管理系统
Java,面试题,简历,Linux,大数据,常用开发工具类,API文档,电子书,各种思维导图资源,百度网盘资源BBS论坛系统 ERP管理系统 OA办公自动化管理系统 车辆管理系统 家庭理财系统 各种后 ...
- Web思维导图实现的技术点分析(附完整源码)
简介 思维导图是一种常见的表达发散性思维的有效工具,市面上有非常多的工具可以用来画思维导图,有免费的也有收费的,此外也有一些可以用来帮助快速实现的JavaScript类库,如:jsMind.KityM ...
- vue源码逐行注释分析+40多m的vue源码程序流程图思维导图 (diff部分待后续更新)
vue源码业余时间差不多看了一年,以前在网上找帖子,发现很多帖子很零散,都是一部分一部分说,断章的很多,所以自己下定决定一行行看,经过自己坚持与努力,现在基本看完了,差ddf那部分,因为考虑到自己要换 ...
- 面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)
Redis 面试题 1.什么是 Redis?. 2.Redis 的数据类型? 3.使用 Redis 有哪些好处? 4.Redis 相比 Memcached 有哪些优势? 5.Memcache 与 Re ...
- 【转】面试还搞不懂redis,快看看这40道Redis面试题(含答案和思维导图)
———————————————— 版权声明:本文为CSDN博主「程序员追风」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog. ...
随机推荐
- 【Spring注解驱动开发】在@Import注解中使用ImportSelector接口导入bean
写在前面 在上一篇关于Spring的@Import注解的文章<[Spring注解驱动开发]使用@Import注解给容器中快速导入一个组件>中,我们简单介绍了如何使用@Import注解给容器 ...
- pom.xml 文件详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- 撒花,推荐一下我怒肝的 GitHub
缘起 之前一直有很多小伙伴们找我,让我聊一聊如何学习 Java ,我都直接回复了一个思维导图,后来想一想觉得回答不是很认真,我的初衷是想让小伙伴们根据思维导图中的知识点,采取各个击破 的原则,哪里不会 ...
- VS Code WebApi系列——2、jwt结合数据库校验
Knowledge should be shared free. 我们都知道WebApi最重要的作用就是为外部服务提供相应的数据接口和服务,所以一般WebApi都会连接后台数据库,那么最重要的一件事就 ...
- selenium(1)-详细解读元素定位的八种方式
安装selenium和下载webdriver 安装selenium pip install selenium pip install selenium -U (判断是否有最新版本) 下载drive ...
- CODING DevOps 系列第五课:微服务测试——微服务下展开体系化的微服务测试
微服务测试的痛点与挑战 这张图可以形象地展示单体服务和微服务的对比,单体应用就像左边巨大的集装箱,软件模块和应用都包括其中:而微服务就像是由一个小集装箱组成,微小的服务组成一个庞大.完整的系统.单体服 ...
- Spring Boot 2.x基础教程:Spring Data JPA的多数据源配置
上一篇我们介绍了在使用JdbcTemplate来做数据访问时候的多数据源配置实现.接下来我们继续学习如何在使用Spring Data JPA的时候,完成多数据源的配置和使用. 添加多数据源的配置 先在 ...
- [源码解析] 从TimeoutException看Flink的心跳机制
[源码解析] 从TimeoutException看Flink的心跳机制 目录 [源码解析] 从TimeoutException看Flink的心跳机制 0x00 摘要 0x01 缘由 0x02 背景概念 ...
- 逻辑式编程语言极简实现(使用C#) - 1. 逻辑式编程语言介绍
相信很多朋友对于逻辑式编程语言,都有一种最熟悉的陌生人的感觉.一方面,平时在书籍.在资讯网站,偶尔能看到一些吹嘘逻辑式编程的话语.但另一方面,也没见过周围有人真正用到它(除了SQL). 遥记当时看&l ...
- Linux hostname主机名配置文件/etc/hosts详解
这篇文章为大家介绍linux hostname主机名配置文件/etc/hosts,包括主机名的用途.配置文件的操作方法等,有需要的朋友,可以参考下 1.什么是Linux主机名 无论在局域网还是INTE ...