我们经常谈 RESTful Web 服务开发,但是我发现很多人实际就根本不懂这个概念。只是听着大家都这么说,也就跟着一起说了,哈哈哈!

因此,在开始推荐这个IDEA插件之前,非常有必要花一小会时间简单聊聊 REST 相关的概念。这是一个看似高大上,实际上很容易理解的概念。

REST 相关概念解读

何为 REST?

REST 即 REpresentational State Transfer 的缩写。这个词组的翻译过来就是"表现层状态转化"。

这样理解起来甚是晦涩,实际上 REST 的全称是 Resource Representational State Transfer ,直白地翻译过来就是 “资源”在网络传输中以某种“表现形式”进行“状态转移” 。

有没有感觉很难理解?

没关系,看了我对 REST 涉及到的一些概念的解读之后你没准就能理解了!

  • 资源(Resource) :我们可以把真实的对象数据称为资源。一个资源既可以是一个集合,也可以是单个个体。比如我们的班级 classes 是代表一个集合形式的资源,而特定的 class 代表单个个体资源。每一种资源都有特定的 URI(统一资源定位符)与之对应,如果我们需要获取这个资源,访问这个 URI 就可以了,比如获取特定的班级:/class/12。另外,资源也可以包含子资源,比如 /classes/classId/teachers:列出某个指定班级的所有老师的信息
  • 表现形式(Representational):"资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式比如 json,xml,image,txt 等等叫做它的"表现层/表现形式"。
  • 状态转移(State Transfer) :大家第一眼看到这个词语一定会很懵逼?内心 BB:这尼玛是啥啊? 大白话来说 REST 中的状态转移更多地描述的服务器端资源的状态,比如你通过增删改查(通过 HTTP 动词实现)引起资源状态的改变。 (HTTP 协议是一个无状态的,所有的资源状态都保存在服务器端)

何为 RESTful 架构?

满足 REST 风格的架构设计就可以称为RESTful 架构:

  1. 每一个 URI 代表一种资源;
  2. 客户端和服务器之间,传递这种资源的某种表现形式比如 json,xml,image,txt 等等;
  3. 客户端通过特定的 HTTP 动词,对服务器端资源进行操作,实现"表现层状态转化"。

何为 RESTful Web服务?

基于 REST 架构的 Web 服务就被称为 RESTful Web 服务。

RESTful Web服务辅助开发工具

安装

这个插件的名字叫做 “RestfulToolkit” 。我们直接在 IDEA 的插件市场即可找到这个插件。如下图所示。

如果你因为网络问题没办法使用 IDEA 自带的插件市场的话,也可以通过IDEA 插件市场的官网手动下载安装。

简单使用

URL 跳转到对应方法

根据 URL 直接跳转到对应的方法定义 (Windows: ctrl+\ or ctrl+alt+n Mac:command+\ or command+alt+n )并且提供了一个服务的树形可视化显示窗口。 如下图所示。

作为HTTP请求工具

这个插件还可以作为一个简单的 http 请求工具来使用。如下图所示。

复制生成 URL、复制方法参数...

这个插件还提供了生成 URL、查询参数、请求体(RequestBody)等功能。

举个例子。我们选中 Controller 中的某个请求对应的方法右击,你会发现多了几个可选项。当你选择Generate & Copy Full URL的话,就可以把整个请求的路径直接复制下来。eg:http://localhost:9333/api/users?pageNum=1&pageSize=1 。

将Java类转换为对应的JSON格式

这个插件还为 Java 类上添加了 Convert to JSON 功能 。

我们选中的某个类对应的方法然后右击,你会发现多了几个可选项。

当我们选择Convert to JSON的话,你会得到如下 json 类型的数据:

{
"username": "demoData",
"password": "demoData",
"rememberMe": true
}

后记

刚刚有小伙伴指出 2020 版本之后的 IDEA 已经无法正常使用这个插件了。不过,网上有人开发了一个替代品 RestfulTool

闲聊

昨晚边看电视边把之前写的一个 RPC 框架给重构了一下。我平时经常会抽时间重构一下之前写的东西,对自己负责也对别人负责。



之前说这个框架帮助很多校招的小伙伴找到了大厂Offer,真的不是我吹牛皮。今年就有很多小伙伴用这个项目当做自己的项目经验。



不过,我在项目中也说了,你想用我的这个项目充当项目经验的话,一定要自己搞懂项目,并对其进行简单的完善。不然的话,真没啥用,就是自己骗自己罢了。

说实话,这个项目今年还很好用,毕竟用的人很少。明年的话,应该也还好。重要的是自己搞懂其中的思想并进行完善。

项目地址:https://github.com/Snailclimb/guide-rpc-framework

图解计算机基础+个人原创的 Java 面试手册PDF版。



微信搜“JavaGuide”回复“计算机基础”即可获取图解计算机基础+个人原创的 Java 面试手册。

RESTFul服务开发必备的一款IDEA插件!用了就离不开了的更多相关文章

  1. 全栈开发必备的10款Sublime Text 插件

    Sublime Text 具有漂亮的用户界面和强大的功能,例如代码缩略图,多重选择,快捷命令等.Sublime Text 更妙的是它的可扩展性.所以,这里挑选了全栈开发必备的10款 Sublime T ...

  2. 全栈开发必备的10款 Sublime Text 插件

    Sublime Text 具有漂亮的用户界面和强大的功能,例如代码缩略图,多重选择,快捷命令等.Sublime Text 更妙的是它的可扩展性.所以,这里挑选了全栈开发必备的10款 Sublime T ...

  3. HTTP RESTful服务开发 spring boot+Maven +Swagger

    这周配合第三方平台整合系统,需要提供HTTP REST服务和使用ActiveMQ推送消息,研究了下,做个笔记. 1.使用eclipse创建Spring Boot项目  创建Spring Boot项目( ...

  4. 移动开发必备!15款jQuery Mobile插件

    移动互联网的发展,来自PC端的网页并不能完全自适应移动端页面需求,使得响应式设计体验产生并成为潮流,也正是这样一种需求,促成了jQuery Mobile的流行.jQuery Mobile这样一款基于j ...

  5. 云端的ABAP Restful服务开发

    愉快的暑假结束了,今天是小朋友新学期开学后的第一个周日,不知道各位家长是否和小朋友们一起,已经适应了新学期的生活了么? Jerry从少的可怜的属于自己的周末时光挤了一小部分时间出来,写了这篇文章. J ...

  6. iOS高效开发必备的10款Objective-C类库

    http://blog.csdn.net/yhawaii/article/details/7392988

  7. React Native开发必备的10个插件包

    Sublime Text 具有漂亮的用户界面和强大的功能,例如代码缩略图,多重选择,快捷命令等.Sublime Text 更妙的是它的可扩展性.所以,这里挑选了全栈开发必备的10款 Sublime T ...

  8. 使用CXF开发RESTFul服务

    相信大家在阅读CXF官方文档(http://cxf.apache.org/docs/index.html)时,总是一知半解.这里向大家推荐一本PacktPub.Apache.CXF.Web.Servi ...

  9. XData -–无需开发、基于配置的数据库RESTful服务,可作为移动App和ExtJS、WPF/Silverlight、Ajax等应用的服务端

    XData -–无需开发.基于配置的数据库RESTful服务,可作为移动App和ExtJS.WPF/Silverlight.Ajax等应用的服务端   源起一个App项目,Web服务器就一台,已经装了 ...

随机推荐

  1. 【应用服务 App Service】App Service中抓取网络日志

    问题描述 众所周知,Azure App Service是一种PaaS服务,也就是说,IaaS层面的所有内容都由平台维护,所以使用App Service的我们根本无法触碰到远行程序的虚拟机(VM), 所 ...

  2. 深入理解Java的抽象类和接口

    对于面向对象来说,抽象是其重要特征之一.对于之中的抽象类和接口,两者有很多相似的地方,又有两者之间区别的地方. 用几个简单的例子让你快速的理解两者之间的概念和区别 鸣谢 一.抽象类 在了解抽象类之前, ...

  3. UI-个人作品集

    前言 现在需要将之前做过的UI设计集起来,并做些好看的设计 设计思路 开头>技能>作品>结束 开头 我使用线条来构图 以及比较融合的背景进行衬托主题 技能 通过文字与图形搭配展示出我 ...

  4. Python开发 常见异常和解决办法

    1.sqlalchemy创建外键关系报错property of that name exists on mapper SQLAlchemy是Python编程语言下的一款开源软件,提供了SQL工具包及对 ...

  5. 对于72种常用css3的使用经验

    对于72种常用css3的使用经验 保存网站源码 目的 保证有足够的css和js文件源码 拿到当前网页的整体布局 本地化 创建web项目 将web项目创建出来 在项目中创建一个文件夹 将所有的js和cs ...

  6. JDK新特性——Stream代码简洁之道的详细用法

    一.概述 Stream 是一组用来处理数组.集合的API,Stream API 提供了一种高效且易于使用的处理数据的方式. Java 8 中之所以费这么大的功夫引入 函数式编程 ,原因有两个: 代码简 ...

  7. JavaScript正则表达式随笔

    概念先行. 正则表达式:又称规则表达式.常用于检索,替换符合某种符合(规则)的文本. 组成:普通字符和元字符,普通字符就是一个普通的查找串,如abc,原字符具有特殊含义. 这里研究的是JavaScri ...

  8. MySQL全面瓦解3:数据类型介绍与分析

    概述 MySQL支持很多数据类型,以便我们能在复杂的业务场景中支持各种各样的数据格式,存储适当的数据内容.我们在设计数据库时,正确的使用数据库类型对整个数据库的整洁和高效,会有很大的帮助. 目前常用的 ...

  9. 上午小测1 B.序列 哈希表+数学

    题目描述 \(EZ\) 每周一都要举行升旗仪式,国旗班会站成一整列整齐地向前行进. 郭神摄像师想要选取其中一段照下来.他想让这一段中每个人的身高成等比数列,展示出最萌身高差.但他发现这个太难办到了.于 ...

  10. nb-iot技术实现跟踪功能的应用

    在互联网和连接的世界里,nb-iot风靡一时.企业和个人正在利用nb-iot技术和nb-iot设备的可靠,快速连接能力,对其技术系统进行渐进式更改,并创建一个互联的"智能"世界. ...