好长时间没有写学习小结了,最近宁正好看了小马哥的微服务系列之《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. 查询某软件所连接的外网IP地址

    一:背景环境: 1>:某机械公司用的某些特殊软件,需要实现所有使用某软件的屏蔽其软件所连接的外网ip,其他上网功能不做限制. 二:需求分析:可以查出此软件所连接的外网ip,在路由器的ip过滤中将 ...

  2. 2021ArchSummit全球架构师峰会上,大家在聊些什么

    大会PPT公开下载链接:https://ppt.infoq.cn/list/assh2021 大会主要情况介绍 2021 ArchSummit全球架构师峰会是该大会正式成立的第十年,是极客邦科技旗下I ...

  3. 『政善治』Postman工具 — 10、Postman中对Cookie的操作

    目录 1.往常的Cookie处理方式 2.Postman中的Cookie管理机制 3.自定义Cookie管理内容 在接口测试中,某些接口的调用,需要带入已有Cookie,比如有些接口需要登陆后才能访问 ...

  4. 爬虫:获取动态加载数据(selenium)(某站)

    如果网站数据是动态加载,需要不停往下拉进度条才能显示数据,用selenium模拟浏览器下拉进度条可以实现动态数据的抓取. 本文希望找到某乎某话题下讨论较多的问题,以此再寻找每一问题涉及的话题关键词(侵 ...

  5. unrar命令解压rar unrar e XXX.rar (验证通过20200511)

    unrar命令解压rar 一个从入门到放弃再到改行的工程师 2018-05-02 17:53:04 3916 收藏展开压缩tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成 ...

  6. AD命令获取计算机、用户相关信息

    1. 获取AD用户相关信息(用户名.创建日期.最后修改密码日期.最后登录日期) Get AD users, Name/Created Date/Last change passwd Date/Last ...

  7. Linux服务之nginx服务篇五(静态/动态文件缓存)

    一.nginx实现静态文件缓存实战 1.nginx静态文件缓存 如果要熟练使用nginx来实现文件的缓存,那下面的几个指令你必须要牢记于心 (1)指令1:proxy_cache_path 作用:设置缓 ...

  8. STM32F4-IAP学习笔记--(转)

    花了断断续续两天时间在STM32上面写了一个IAP(In Application Programing)Boot,期间多多少少还是遇到的了不少问题.现在就花点时间把这两天写的东西整理一下,就当是学习笔 ...

  9. sql生成可读性逻辑图

    下面这张图是我自己画的sql逻辑图.规定了一些画法.然后画出来是这样的. 因为经常要读别人的sql,又臭又长,可读性很差,于是想做一个程序自动生成的逻辑图. 为什么不用执行语法树,因为个人觉得语法树可 ...

  10. 利用TortoiseGit向Github上传文件

    利用TortoiseGit向Github上传文件 第一步:建一个新文件夹,作为本地仓库 第二步:右键选择设置为版本库 若弹出,确认即可 重新打开改文件,会发现多了一个绿色的小勾 在文件夹中会自动生成一 ...