好长时间没有写学习小结了,最近宁正好看了小马哥的微服务系列之《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调用(学习笔记)的更多相关文章

  1. 85道Java微服务面试题整理(助力2020面试)

    微服务 面试题 1.您对微服务有何了解? 2.微服务架构有哪些优势? 3.微服务有哪些特点? 4.设计微服务的最佳实践是什么? 5.微服务架构如何运作? 6.微服务架构的优缺点是什么? 7.单片,SO ...

  2. Java微服务对UTC时间格式的处理

    一.背景 先说一下为什么要使用UTC时间.开发一个全球化的系统,服务端(Java微服务)集中部署在同一个地方,用户在全球通过浏览器.手机客户端访问.不同地区的时区是不一样的,同一个时间戳,不同的用户看 ...

  3. Java微服务框架一览

    引言:本文首先简单介绍了微服务的概念以及使用微服务所能带来的优势,然后结合实例介绍了几个常见的Java微服务框架. 微服务在开发领域的应用越来越广泛,因为开发人员致力于创建更大.更复杂的应用程序,而这 ...

  4. Java微服务(二):服务消费者与提供者搭建

    本文接着上一篇写的<Java微服务(一):dubbo-admin控制台的使用>,上篇文章介绍了docker,zookeeper环境的安装,并参考dubbo官网演示了dubbo-admin控 ...

  5. Java微服务(二):负载均衡、序列化、熔断

    本文接着上一篇写的<Java微服务(二):服务消费者与提供者搭建>,上一篇文章主要讲述了消费者与服务者的搭建与简单的实现.其中重点需要注意配置文件中的几个坑. 本章节介绍一些零散的内容:服 ...

  6. 现如今,最热门的13个Java微服务框架

    曾经的 服务器领域 有许多不同的芯片架构???有哪些芯片架构???和操作系统???,经过长期发展,Java的“一次编译,到处运行”使得它在服务器领域找到一席之地,成为程序员们的最爱. 本文,我们将和大 ...

  7. 多云架构下,JAVA微服务技术选型实例解析

    [摘要] 本文介绍了基于开源自建和适配云厂商开发框架两种构建多云架构的思路,以及这些思路的优缺点. 微服务生态 微服务生态本质上是一种微服务架构模式的实现,包括微服务开发SDK,以及微服务基础设施. ...

  8. Java微服务 vs Go微服务,究竟谁更强!?

    前言 Java微服务能像Go微服务一样快吗? 这是我最近一直在思索地一个问题. 去年8月份的the Oracle Groundbreakers Tour 2020 LATAM大会上,Mark Nels ...

  9. 从成本角度看Java微服务

    近年来,微服务因其良好的灵活性和伸缩性等特点备受追捧,很多公司开始采用微服务架构或将已有的单体系统改造成微服务.IBM也于近日开源了轻量级Java微服务应用服务器 Open Liberty .但是采用 ...

随机推荐

  1. idea插件手动安装

    更多精彩: 例如安装Grep Console 插件  把刚才解压的文件放到  plugins   重启idea   自定义设计

  2. springboot国际化与@valid国际化支持

    springboot国际化 springboot对国际化的支持还是很好的,要实现国际化还简单.主要流程是通过配置springboot的LocaleResolver解析器,当请求打到springboot ...

  3. .NET平台系列7 .NET Core 体系结构详解

    系列目录     [已更新最新开发文章,点击查看详细]   .NET Core 是基于.NET Framework 为基础,借鉴了其优秀的思想与强大的功能,经过重新设计与构建,实现了.NET Fram ...

  4. linux远程下载文件 的两种方法之 ftp命令和scp命令

    ftp命令: 服务器有安装ftp Server,另外一台linux可以使用ftp的client程序来进行文件的拷贝读取和下载. 1. 连接ftp服务器  格式:ftp [hostname| ip-ad ...

  5. 【例 3】 修改 bols 文件的 atime 和 mtime。 [root@localhost ~]# touch -d "2017-05-04 15:44" bols

    Linux touch命令:创建文件及修改文件时间戳 < Linux删除空目录(rmdir命令)Linux在文件之间建立软/硬链接(ln命令) > <Linux就该这么学>是一 ...

  6. 030. Python装饰器

    一  装饰器 1.1 装饰器介绍 扩展函数新功能的@定义:替换旧函数,返回新函数,在不改变原有代码的前提下,为该函数扩展新功能;语法:@ (语法糖) 1.2 装饰器的原型 def show(func) ...

  7. GCC参数详解-(转自:篱笆博客)

    gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言, ...

  8. Hibernate使用原生SQL语句进行无关联多表查询

    背景:有两个表:CpCg与CpGg需要进行多表查询 因为CpGg表设计到与另外的表也有联系,因此师兄没有关联此两个表,只是用字段进行逻辑关联,CpGg表的cp字段与CpCg表的id字段逻辑关联

  9. MySQL中InnoDB存储引擎的实现和运行原理

    InnoDB 存储引擎作为我们最常用到的存储引擎之一,充分熟悉它的的实现和运行原理,有助于我们更好地创建和维护数据库表. InnoDB 体系架构 InnoDB 主要包括了: 内存池.后台线程以及存储文 ...

  10. 六、.net core (.NET 6)程序部署到Docker上

    使用Docker部署应用程序 首先确保已经安装Docker 桌面软件,如下图: 然后,把需要部署到Docker上面的项目,咱们先添加Docker的支持,启动项目右键 -> 添加 -> Do ...