静态 Web 内容
HTTP 请求内容由Web 服务器文件系统提供,常见静态Web内容如:HTML、CSS、JS、JPEG、Flash等等。
特点:计算类型:I/O 类型、交互方式:单一、资源内容:相同(基本)、资源路劲:物理路径(文件、目录)、请求方法:GET(主要)
常见使用场景:信息展示、样式文件(CSS)、脚本文件(JS)、图片(GIF、JPEG、JPEG)、多媒体(Movie)、文件下载。
常见Web服务器:Apache HTTP Server、Nginx、GWS。
为什么Java Web Sever不是长用的Web Server?
内存占用:类型、分配
垃圾回收:被动回收、停顿
并发处理:线程池、线程开销
标准优化技术:资源变化响应头(Last-Modified)、请求头(If-Modified-since)
资源缓存:响应头(ETag)、请求头(If-None-Match)
动态 Web 内容
与静态 Web 内容不同,请求内容通过服务器计算而来
特点:计算类型:混合类型(I/O、CPU、内存等)、交互方式:丰富(用户输入、客户端特征等)、资源内容:多样性资源路径:逻辑路径(虚拟)、请求方法:GET、HEAD、PUT、POST常见使用场景:页面渲染、表单交互(Form)、AJAX、XML、JSON/JSONP、Web Services(SOAP、WSDL)、WebSocket、流行 Java Web 服务器、Servlet 容器(Tomcat、Jetty)、非 Servlet容器(Undertow)
REST 理论基础
架构属性:性能(Performance)、可伸缩性(Scalability)、统一接口简化性(Simplicity of a uniform Interface)、组件可修改性(Modifiability of components)、组件通讯可见性(Visibility of communication between components)、组件可移植性(Portability of component)、可靠性(Reliability)。
架构约束:C/S架构(Client-Server)、无状态(Stateless)、可缓存(Cacheable)、分层系统(Layered System)、按需代码(Code on demand)、统一接口(Uniform interface)
统一接口(Uniform interface):
资源识别(Identification of resources)
URI(Uniform Resource Identifier )
资源操作(Manipulation of resources through representations)
HTTP verbs:GET、PUT、POST、DELETE
自描述消息(Self-descriptive messages)
Content-Type
MIME-Type
Media Type: application/javascript、 text/html
超媒体(HATEOAS)
Hypermedia As The Engine Of Application State
Spring Boot REST
核心接口
定义相关
@Controller
@RestController
映射相关
@RequestMapping
@PathVariable
请求相关
@RequestParam
@RequestHeader
@CookieValue
RequestEntity
响应相关
@ResponseBody
ResponseEntity
REST文档生成
Spring Boot /mappings endpoint
Spring RestDocs
Swagger
REST 客户端实践
Web浏览器、Apache HttpClient、Spring RestTemplate