JAVA微服务应用(1)--SpringBoot中的REST API调用(学习笔记)
好长时间没有写学习小结了,最近宁正好看了小马哥的微服务系列之《Spring Boot》系列,颇有收获,并且公司也布置一个课题就是关于Spring中的REST API调用。于是乎回归本行,再次稍微讲讲这几天的学习与总结。其中借鉴了小马哥的一些思想也希望和大家分享出来一起学习一起讨论,如果有讲的不对或者讲的不好的地方请大家一定要加我微信gcl18360939450并备注本文标题。总之话不多说,今天就来看看Spring中的REST API调用。
首先,学习Spring中的REST就必须明白什么是REST。
一.定义
百度百科对REST进行了英文补全----Representational State Transfer,根据字母意思大致就是具有表达性质的状态传输。他是Roy Thomas Fieding在一篇博士论文中提出的一种软件架构风格。相对应地还有SOAP,WSDL等等。
明白这点,其实REST(也可以叫做Restful)就是一种软件架构的风格之后,那么他相对于SOAP,WSDL又有哪些异同?
二.架构属性
a.性能:
性能上属于轻量级架构(支持XML,HTML,JSON),因为JSON在数据级别上最为轻量级,因此REST架构主要使用JSON进行数据交互
b.可伸缩性
c.统一接口:
uri的命名的需要见知意,并于对应的资源相对应。若是uri的定义过于复杂或者过于随意则是一种反REST的表现
d.简化性
e.组建(可修改/通讯可见/可以移植)
三.架构约束
a.c/s架构方式
b.无状态:
服务端客户端不是一直保持联通
c.可缓存:(请求头中的标签,来设置缓存;cookie等等)
d.分层系统(MVC分层结构)
e.按需代码
f.同意接口
以上作为REST的核心便是--统一接口了,同意接口的实现分别可以从1.资源识别,资源操作,自描述信息(包括请求头中的相关信息,超媒体(HATEOAS),以下详细说明:
五.统一接口
a资源识别,是web层中暴露给互联网之中的,跟上面一致,资源需要按照一定的规律不可以反REST
b.资源操作:
Http verbs:GET ,PUT ,POST ,DELETE
其中 GET,PUT,DELETE是密等的,POST是非密等。所谓密等就是表单是否重复创立于多次提交问题。
c.自描述
1.Content-type
2.MIME-Type
3.MEDIA Type:application/javascript. text/(html/xml/json)
f:HATEOAS(超媒体)
接下来,就是Spring中的REST的应用
6.Spring 中的REST
核心接口(注意,下面的接口都是适用于任何形式的请求)
1.定义相关
@Controller
@RestController
2.映射相关
@RequestMapping
@PathVariable
3.请求相关
@RequestParam
@RequestHeader
@CookieValue
RequestEntity
4.响应相关(间上图)
@ResponseBody(RestController = ResponseBody+Controller且确定返回头)
ResponseEntity(不确定返回头)
5.Json
6.xml
通过对核心API的调用,完成对接口的统一和规范,这也是REST的主要特点。
讲了这么多,REST和核心在于Controller层对请求的接受与相应,其中包括不同的数据格式以及不同的请求头等等,总之,现在的软件架构越来越趋向于REST方式来调用API,我写的不好的地方或者不正确的地方都欢迎网友大大们来指正。写了这么多,最好洗洗睡吧。
JAVA微服务应用(1)--SpringBoot中的REST API调用(学习笔记)的更多相关文章
- 85道Java微服务面试题整理(助力2020面试)
微服务 面试题 1.您对微服务有何了解? 2.微服务架构有哪些优势? 3.微服务有哪些特点? 4.设计微服务的最佳实践是什么? 5.微服务架构如何运作? 6.微服务架构的优缺点是什么? 7.单片,SO ...
- Java微服务对UTC时间格式的处理
一.背景 先说一下为什么要使用UTC时间.开发一个全球化的系统,服务端(Java微服务)集中部署在同一个地方,用户在全球通过浏览器.手机客户端访问.不同地区的时区是不一样的,同一个时间戳,不同的用户看 ...
- Java微服务框架一览
引言:本文首先简单介绍了微服务的概念以及使用微服务所能带来的优势,然后结合实例介绍了几个常见的Java微服务框架. 微服务在开发领域的应用越来越广泛,因为开发人员致力于创建更大.更复杂的应用程序,而这 ...
- Java微服务(二):服务消费者与提供者搭建
本文接着上一篇写的<Java微服务(一):dubbo-admin控制台的使用>,上篇文章介绍了docker,zookeeper环境的安装,并参考dubbo官网演示了dubbo-admin控 ...
- Java微服务(二):负载均衡、序列化、熔断
本文接着上一篇写的<Java微服务(二):服务消费者与提供者搭建>,上一篇文章主要讲述了消费者与服务者的搭建与简单的实现.其中重点需要注意配置文件中的几个坑. 本章节介绍一些零散的内容:服 ...
- 现如今,最热门的13个Java微服务框架
曾经的 服务器领域 有许多不同的芯片架构???有哪些芯片架构???和操作系统???,经过长期发展,Java的“一次编译,到处运行”使得它在服务器领域找到一席之地,成为程序员们的最爱. 本文,我们将和大 ...
- 多云架构下,JAVA微服务技术选型实例解析
[摘要] 本文介绍了基于开源自建和适配云厂商开发框架两种构建多云架构的思路,以及这些思路的优缺点. 微服务生态 微服务生态本质上是一种微服务架构模式的实现,包括微服务开发SDK,以及微服务基础设施. ...
- Java微服务 vs Go微服务,究竟谁更强!?
前言 Java微服务能像Go微服务一样快吗? 这是我最近一直在思索地一个问题. 去年8月份的the Oracle Groundbreakers Tour 2020 LATAM大会上,Mark Nels ...
- 从成本角度看Java微服务
近年来,微服务因其良好的灵活性和伸缩性等特点备受追捧,很多公司开始采用微服务架构或将已有的单体系统改造成微服务.IBM也于近日开源了轻量级Java微服务应用服务器 Open Liberty .但是采用 ...
随机推荐
- java面试一日一题:如何设计一款垃圾回收器
问题:如果让你设计一个垃圾回收器,你会考虑哪些问题 分析:该问题主要考察对java中垃圾回收器的理解,要理解怎么回收:一款好的垃圾回收器有哪些衡量指标 回答要点: 主要从以下几点去考虑, 1.垃圾回收 ...
- 提升50%!Presto如何提升Hudi表查询性能?
分享一篇关于使用Hudi Clustering来优化Presto查询性能的talk talk主要分为如下几个部分 演讲者背景介绍 Apache Hudi介绍 数据湖演进和用例说明 Hudi Clust ...
- Ubuntu执行命令时,不sudo提示权限不足,sudo提示找不到该命令
问题:Ubuntu执行命令时,不sudo提示权限不足,sudo提示找不到该命令 补充描述:尝试将命令所在路径添加到/etc/profile中(所有用户环境变量),结果sudo -i切换到root用户后 ...
- jQurey判断下一项是否为指定项、下一项是否有指定项
jQurey判断下一项是否为指定项.下一项是否有指定项 此例子中,如果某个列表项没有二级列表,那么去掉它的展开.收起按钮.就是前边那个减号. 此时我们需要判断VOC综合治理技术这一项是否含有二级菜单, ...
- PyCharm和JDK安装与配置(windows)
原创 PyCharm和JDK安装与配置(windows) mb5cd21e691f31a关注0人评论2024人阅读2020-03-20 21:08:41 一.PyCharm安装与配置 PyChar ...
- Linux 操作系统(二)搜索文件命令find、locate、which、whereis、grep、wc
以下命令均已在 Kali Linux 下验证. 1.find 命令 --1-- find /usr/share -name test.lst //精准搜索,文件名需要与-name后的内容一模一样包括后 ...
- Linux服务之nginx服务篇五(静态/动态文件缓存)
一.nginx实现静态文件缓存实战 1.nginx静态文件缓存 如果要熟练使用nginx来实现文件的缓存,那下面的几个指令你必须要牢记于心 (1)指令1:proxy_cache_path 作用:设置缓 ...
- 9.4-6 kill & killall & pkill
kill:终止进程 能够终止你希望停止的进程. kill 命令的参数选项及说明 -l 列出全部的信号名称 -p 指定kill命令只打印相关进程的进程号,而不发送任何信号 -s 指定要 ...
- nginx反向代理网站镜像
某些公司会墙特定网站,如果你有一个可访问的域名和服务器,就可以通过nginx反向代理来来解决这些问题.比如现在我们用mirror.example.com镜像www.baidu.com,以下是详细操作. ...
- Day029 JDK8中新日期和时间API (四)
JDK8中新日期和时间API 其他的一些API ZoneId:该类中包含了所有的时区信息,一个时区的ID,如 Europe/Paris ZonedDateTime:一个在ISO-8601日历系统时区的 ...