好长时间没有写学习小结了,最近宁正好看了小马哥的微服务系列之《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. Mysql杂项配置:sql_mode

    常用配置: SHOW VARIABLES LIKE 'sql_mode'; SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ENGI ...

  2. Nginx解决跨域问题(CORS)

    跨域 解决跨域问题一般有两种思路: CORS 在后端服务器设置 HTTP 响应头,把你需要运行访问的域名加入加入 Access-Control-Allow-Origin中. jsonp 把后端根据请求 ...

  3. 【插件篇】前段bootstrap-table-treegrid试手,解决无法显示树形列表或者图标不显示问题。

    说明:具体代码操作我就不贴了.官方有正规的例子!bootstrap-table-examples传送 使用注意事项: 传入的id和pid可以是string类型的(我后台返回的是Long类型转换成str ...

  4. 【近取 key】Alpha 阶段任务分配

    项目 内容 这个作业属于哪个课程 2021春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 alpha阶段初始任务分配 我在这个课程的目标是 进一步提升工程化开发能力,积累团队协作经验,熟悉 ...

  5. String相关介绍

    String 字符串是常量,创建后不可改变. 字符串字面值存储在字符串池中,可以共享. String s1 = "Runoob"; // String 直接创建 String s2 ...

  6. MSSQL·查询存储过程中的关键字

    阅文时长 | 0.22分钟 字数统计 | 408字符 主要内容 | 1.引言&背景 2.声明与参考资料 『MSSQL·查询存储过程中的关键字』 编写人 | SCscHero 编写时间 | 20 ...

  7. 在Visual Studio 中使用git——浏览版本库(七)

    在Visual Studio 中使用git--什么是Git(一) 在Visual Studio 中使用git--给Visual Studio安装 git插件(二) 在Visual Studio 中使用 ...

  8. SpringBoot整合shiro系列-SpingBoot是如何将shiroFilter注册到servlet容器中的

    一.先从配置类入手,主要是@Bean了一个ShiroFilterFactoryBean: @Data @Configuration @Slf4j @EnableConfigurationPropert ...

  9. Linux中find命令用法全汇总,看完就没有不会用的!

    Linux中find命令用法全汇总,看完就没有不会用的! 中琦2513 马哥Linux运维 2017-04-10   糖豆贴心提醒,本文阅读时间7分钟 Linux 查找命令是Linux系统中最重要和最 ...

  10. STM32的三种启动方式