文章目录
- 一、服务调用
-
- 1、RESTful [HTTP]
- 2、RPC
- 3、HTTP [rest] 对比RPC
- 4、why RPCli>
- 二、HTTP建立流程
- 三、Tomcat的作用li>
- 四、HTTP请求是如何从前端到后端的li>
- 五、HTTP请求与SpringBoot是如何协作的li>
-
- 1、方法绑定注解
- 2、参数绑定注解
-
??对于小白来说,只要知道”在浏览器输入一个 址,就会返回一个 页“就行了。那么对于一个后端程序员来说,我们需要知道的是是什么p>
??前后端分离时代,一个应用软件被分成了前端应用和后端应用。简单的来说就是:前端程序猿写好页面,在需要有数据填充的地方调用API接口,这个API接口是由后端程序猿提供的(哈,这就是面向接口编程)。因此这个API接口就是关键,前后端分离的落地必须依靠优良的API接口定义。如何定义好一个优秀接口p>
HTTP和各类RPC协议【比如比较有名的gRPC、thrift】大多都是基于TCP传输协议【但实际上它们不一定非得使用TCP,改用UDP或者HTTP,其实也可以做到类似的功能】造出来的,它们都只是定义了不同消息格式的应用层协议而已。
→HTTP协议(Hyper Text Transfer Protocol),又叫做超文本传输协议。我们用的比较多,平时上 在浏览器上敲个 址就能访问 页,这里用到的就是HTTP协议。
→RPC(Remote Procedure Call),又叫做远程过程调用。它本身并不是一个具体的协议,而是一种调用方式。
一、服务调用
调用服务前,需要先设计好接口。
接口定义:程序之间协作所要遵循的一套规范、标准。
接口的优点:
- 1.责任划分清晰
- 2.缩短研发周期
- 3.可拓展性强
API
应用程序编程接口(API:Application Programming Interface):以HTTP协议形式提供,定义了输入、输出功能描述的服务。
1、RESTful [HTTP]
按照一定的规则写出的易读、易懂的api文档;目的是让前端、后端、测试三方在工作的时候有据可循,以提升开发和测试的效率。(非强制要求,软要求)
REST即表述性状态传递(Representational State Transfer,简称REST),是一种软件架构风格。REST通过HTTP协议定义的通用动词方法(GET、PUT、DELETE、POST) ,以URI对 络资源进行唯一标识,响应端根据请求端的不同需求,通过无状态通信,对其请求的资源进行表述。
REST实现主要流程:REST使用HTTP+URI+XML /JSON 的技术来实现其API要求的架构风格=>HTTP协议和URI用于统一接口和定位资源,文本、二进制流、XML、JSON等格式用来作为资源的表述。
restful架构主要原则:
1、 络上的所有事物都被抽象为资源。
2、每个资源都有一个唯一的资源标识符。
3、同一个资源具有多种表现形(xml,json等)。
4、对资源的各种操作不会改变资源标识符。
5、所有的操作都是无状态的。
CRUD语法风格如下:
1.查
方法:get
响应码:200+查询数据
2.增
方法:post
响应码:201+新增数据
3.改
方法:put
响应码:200或201+修改数据
4.删
方法:delete
响应码:204+无
与 RPC 相比,Restful API 有相对统一的标准,因而更通用,兼容性更好,支持不同的语言。HTTP 协议是基于文本的,一般具备更好的可读性。但是缺点也很明显:
- Restful 接口需要额外的定义,无论是客户端还是服务端,都需要额外的代码来处理,而 RPC 调用则更接近于直接调用。
- 基于 HTTP 协议的 Restful 文冗余,承载了过多的无效信息,而 RPC 通常使用自定义的协议格式,减少冗余 文。
- RPC 可以采用更高效的序列化协议,将文本转为二进制传输,获得更高的性能。
- 因为 RPC 的灵活性,所以更容易扩展和集成诸如注册中心、负载均衡等功能。
2、RPC
RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议,允许调用不同进程空间的程序。RPC 的客户端和服务器可以在一台机器上,也可以在不同的机器上。程序员使用时,就像调用本地程序一样,无需关注内部的实现细节。
RPC 即远程过程调用,很简单的概念,像调用本地服务(方法)一样调用服务器的服务(方法) 。
- 调用流程
使用TCP协议的话,就会涉及到TCP是如何建立起来的。面试中能够常遇到的名词三次握手,四次挥手就是在这里产生的。
所以说,要想能够对客户端http请求进行回应的话,就首先需要建立起来TCP连接,也就是socket。

- 1、 客户端Socket:首先调用Socket类的构造函数,以服务器的指定的IP地址或指定的主机名和指定的端口 为参数,创建一个Socket流,在创建Socket流的过程中包含了向服务器请求建立通讯连接的过程实现。
- 2、服务器端Socket:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控 络状态,等待客户端的连接请求。
- 3、监听服务器连接:
-
4、 建立了客户端和服务器端通讯Socket后。就可以使用Socket的方法getInputStream()和getOutputStream()来创建输入/输出流。这样,使用Socket类后, 络输入输出也转化为使用流对象的过程。
-
5、 待通讯任务完毕后,我们用流对象的close()方法来关闭用于 络通讯的输入输出流,在用Socket对象的close()方法来关闭Socket。
三、Tomcat的作用h1>
??用来监听指定IP:port,一旦在该IP:port上发送请求,Tomcat服务器立马收到。所以简单来说Tomcat就是用来监听请求的。
四、HTTP请求是如何从前端到后端的h1>
前端url请求→cas 关认证→ngnix转发→后端IP:port/url路径
-
Step1:登录用户发送url请求(eg:douyu.com)
格式:协议://主机地址/路径 -
Step2:cas认证系统对登录用户的token进行 关认证
-
Step3:认证通过后交给ngnix服务器进行转发,转发到指定的服务器路径(10.128.191.19:8080/douyu/index)
??这里的10.128.191.19即为指定服务器,8080即为指定端口,douyu即为指定应用,index即为指定服务。
??前端就是通过这样一个过程访问到指定的服务的。
五、HTTP请求与SpringBoot是如何协作的h1>
1、方法绑定注解
?? 通过 @RequestMapping,它是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。 用于方法上,表示将指定请求映射到指定方法上。
2、参数绑定注解
-
@RequestHeader 注解,可以把Request请求header部分的值绑定到方法的参数上。
-
@RequestParam常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况 , 因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值;
-
@RequestBody:该注解常用来处理Content-Type: 它是通过使用HandlerAdapter 配置的HttpMessageConverters来解析post data body,然后绑定到相应的bean上的。
-
@PathVariable:当使用@RequestMapping URI template 样式映射时, 即 someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。
-
@SessionAttributes :该注解用来绑定HttpSession中的attribute对象的值,便于在方法中的参数里使用。该注解有value、types两个属性,可以通过名字和类型指定要使用的attribute 对象;
-
@ModelAttribute:用于方法上时: 通常用来在处理@RequestMapping之前,为请求绑定需要从后台查询的model;用于参数上时: 用来通过名称对应,把相应名称的值绑定到注解的参数bean上。
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树类和接口接口93567 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!