好长时间没有写学习小结了,最近宁正好看了小马哥的微服务系列之《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. Maven关于web.xml中Servlet和Servlet映射的问题

    在配置Servlet时,有两个地方需要配置. 一个是<servlet>,另一个是<servlet-Mapping>,这两个一个是配置Servlet,一个是配置其映射信息. &l ...

  2. Linux性能调优命令之free

    功能说明 free 命令显示系统使用和空闲的内存情况,包括物理内存.交互区内存(swap)和内核缓冲区内存.共享内存将被忽略 语法 free [参数] 参数 -b : 以Byte为单位显示内存使用情况 ...

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

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

  4. JavaScript中的运算符和语句

    一.JavaScript的运算符 a.基本的算术运算符(+.-.*./.%) -.*./.%运算符会在必要的时候将操作数转换为数字,无法转换成数字的操作数将会转换成NaN,相应的运算结果也是NaN. ...

  5. MegaCli是一款管理维护硬件RAID软件,可以通过它来了解当前raid卡的所有信息,包括 raid卡的型号,raid的阵列类型,raid 上各磁盘状态

    MegaCli 监控raid状态 转载weixin_30344131 最后发布于2015-10-16 13:05:00 阅读数    简介 MegaCli是一款管理维护硬件RAID软件,可以通过它来了 ...

  6. Django 基本操作

    www.djangobook.comdjangobook.py3k.cn 1.django-admin.py startproject mysite2.manage.py startapp blog3 ...

  7. 【Azure 事件中心】azure-spring-cloud-stream-binder-eventhubs客户端组件问题, 实践消息非顺序可达

    问题描述 查阅了Azure的官方文档( 将事件发送到特定分区: https://docs.azure.cn/zh-cn/event-hubs/event-hubs-availability-and-c ...

  8. nginx 的基础知识(三)

    Nginx命令 nginx -s reopen 重启nginx nginx -s reload  重新加载nginx文件 nginx -s stop  停止nginx服务 nginx -s quit ...

  9. 在 Android 使用 QuickJS JavaScript 引擎教程

    quickjs-android 是 QuickJS JavaScript 引擎的 Android 接口框架,整体基于面向对象设计,提供了自动GC功能,使用简单.armeabi-v7a 的大小仅 350 ...

  10. 直击Huawei Mate 40产线背后的华为云IoT智能制造

    摘要:数字孪生?在数字世界找到物理世界的设备! 本文分享自华为云社区<[云驻共创]Huawei Mate 40产线直击之华为云IoT智能制造助力工厂数字化转型>,原文作者:启明. Part ...