使用SpringBoot来开发一个简单的restful api网关功能,目标:实现对SpringBoot的简单入门。

1. 创建SpringBoot项目

可以通过spring官网(https://start.spring.io)的来创建springboot项目,或者idea的springboot initialization来创建,或者手工创建一个Maven工程然后引入springboot的dependency。

官网创建注意事项:在serch for dependency输入web,即可完成基本的restful接口网关的功能,如果要JPA或者oauth安全相关的组件,可以增加rest repository、spring security等相关组件依赖库,spring提供的配套组件还是很多的,基本涵盖了所有应用场合。

2. 工程结构

工程中maven的pom文件:

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>1.4.7.RELEASE</version>

<relativePath/> <!-- lookup parent from repository -->

</parent>

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<java.version>1.8</java.version>

</properties>

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

<scope>test</scope>

</dependency>

</dependencies>

<build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

</plugins>

</build>

在国内访问maven的依赖库速度感人,建议使用阿里云的maven镜像服务器,或者使用公司的maven私服,maven setting.xml中需要添加mirror地址,阿里云maven地址:

<mirror>

<id>nexus-aliyun</id>

<mirrorOf>*</mirrorOf>

<name>Nexus aliyun</name>

<url>http://maven.aliyun.com/nexus/content/groups/public</url>

</mirror>

自动生成的Application.java这个类相当于我们程序的main函数入口,springboot集成了Tomcat和Jetty,默认使用Tomcat作为应用容器,开发者只需要将工程打成jar包直接丢到服务器上就可以执行了。

SpringBootStartApplication.java:

@SpringBootApplication

public class SpringbootStartApplication {

public static void main(String[] args) {

SpringApplication.run(SpringbootStartApplication.class, args);

}

}

所有的springboot application启动类都需要在类级别上加上@SpringBootApplication注解。

创建一个UserController类,里面只有获取用户信息的方法,分别根据参数和请求方式的不同用三种方法进行了重写。

第一种:使用get请求用户信息的实现方式。

代码如下,写好后运行Application类,运行成功后可以使用http发包工具进行测试,发包工具推荐使用postman,get请求的URL为http://localhost:8080/springboot/getUserByGet?userName=feiweiwei

//@RestController注解能够使项目支持Rest

@RestController

//表示该controller类下所有的方法都公用的一级上下文根

@RequestMapping(value = "/springboot")

public class UserController {

//这里使用@RequestMapping注解表示该方法对应的二级上下文路径

@RequestMapping(value = "/getUserByGet", method = RequestMethod.GET)

String getUserByGet(@RequestParam(value = "userName") String userName){

return "Hello " + userName;

}

}

@RequestMapping表示请求的URL上下文路径,@RequestParam,该注解可以通过value指定入参。

第二种:POST的请求方式。

通过在@RequestMapping注解中设置method为POST来表示该请求为POST请求。

//通过RequestMethod.POST表示请求需要时POST方式

@RequestMapping(value = "/getUserByPost", method = RequestMethod.POST)

String getUserByPost(@RequestParam(value = "userName") String userName){

return "Hello " + userName;

}

第三种:请求参数为JSON格式的请求方法。

请求参数是像上面那样通过url form形式提交的请求参数,那么必须使用@RequestParam注解来标示参数,如果使用的请求报文是POST形势的JSON串,那么这里在入参的注解一定要使用@RequestBody,否则会报json解析错误。

//在入参设置@RequestBody注解表示接收整个报文体,这里主要用在接收整个POST请求中的json报文体,

//目前主流的请求报文也都是JSON格式了,使用该注解就能够获取整个JSON报文体作为入参,使用JSON解析工具解析后获取具体参数

@RequestMapping(value = "/getUserByJson",method = RequestMethod.POST)

String getUserByJson(@RequestBody String data){

return "Json is " + data;

}

SpringBoot入门简易教程的更多相关文章

  1. 文件上传利器SWFUpload入门简易教程

    凡做过网站开发的都应该知道表单file的确鸡肋. Ajax解决了不刷新页面提交表单,但是却没有解决文件上传不刷新页面,当然也有其它技术让不刷新页面而提交文件,该技术主要是利用隐藏的iFrame, 较A ...

  2. SpringBoot入门详细教程

    一.SpringBoot入门 1.SpringBoot简介 SpringBoot是整个Spring技术栈的整合,来简化Spring应用开发,约定大于配置,去繁从简,just run 就能创建一 个独立 ...

  3. Vi 入门简易教程

    首先,请注意,以下所讲的,全部是键盘在英文输入模式下.如果键盘是在中文输 入模式,全部的指令不正确. vi 有两种模式: Command Mode(指令模式) and Insert Mode(我姑且称 ...

  4. 【学习笔记】动态 dp 入门简易教程

    序列 dp 引入:最大子段和 给定一个数列 \(a_1, a_2, \cdots, a_n\)(可能为负),求 \(\max\limits_{1\le l\le r\le n}\left\{\sum_ ...

  5. SpringBoot入门教程(二)CentOS部署SpringBoot项目从0到1

    在之前的博文<详解intellij idea搭建SpringBoot>介绍了idea搭建SpringBoot的详细过程, 并在<CentOS安装Tomcat>中介绍了Tomca ...

  6. Kivy 中文教程 实例入门 简易画板 (Simple Paint App):1. 自定义窗口部件 (widget)

    1. 框架代码 用 PyCharm 新建一个名为 SimplePaintApp 的项目,然后新建一个名为 simple_paint_app.py 的 Python 源文件, 在代码编辑器中,输入以下框 ...

  7. Kivy 中文教程 实例入门 简易画板 (Simple Paint App):3. 随机颜色及清除按钮

    1. 随机颜色 通过前面的教程,咪博士已经带大家实现了画板的绘图功能.但是,现在画板只能画出黄色的图案,还十分单调,接下来咪博士就教大家,如何使用随机颜色,让画板变得五彩斑斓. 改进后的代码如下: f ...

  8. Kivy 中文教程 实例入门 简易画板 (Simple Paint App):2. 实现绘图功能

    1. 理解 kivy 坐标系统 上一节中,咪博士带大家实现了画板程序的基础框架,以及一个基本的自定义窗口部件(widget).在上一节的末尾,咪博士留了一道关于 kivy 坐标系统的思考题给大家.通过 ...

  9. Kivy 中文教程 实例入门 简易画板 (Simple Paint App):0. 项目简介 & 成果展示

    本教程咪博士将带领大家学习创建自己的窗口部件 (widget).最终,我们完成的作品是一个简易的画板程序. 当用 kivy 创建应用时,我们需要仔细思考以下 3 个问题: 我们创建的应用需要处理什么数 ...

随机推荐

  1. Git 进阶:10大技巧让你迅速提升

    1.Git自动补全 假使你使用命令行工具运行Git命令,那么每次手动输入各种命令是一件很令人厌烦的事情. 命令: cd ~ curl https://raw.github.com/git/git/ma ...

  2. ModuleNotFoundError: No module named 'tools.nnwrap' pytorch 安装

    https://pytorch.org/get-started/locally/ pytorch 主页选择后安装

  3. oracle函数 months_between(d1,d2)

    [功能]:返回日期d1到日期d2之间的月数. [参数]:d1,d2 日期型 [返回]:数字 如果d1>d2,则返回正数 如果d1<d2,则返回负数 [示例] select sysdate, ...

  4. linux更新系统时间

    查看时间 date 更新时间 yum install ntpdate ntpdate time.windows.com

  5. SaltStack之用户账户管理

    在Salt.state中,user 模块是用来创建用户和管理用户设定的,用户可以被设置成 present 状态或者 absent 状态 注释: present:添加用户 absent   : 删除用户 ...

  6. oracle整合简单,无关联的数据库访问

    如果你有几个简单的数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系) 例如: SELECT NAME FROM EMP WHERE EMP_NO = 1234; SELECT NAM ...

  7. CSS检测窗口大小显示和隐藏内容

    代码不多 用css写的话简单一点 @media (max-width: 1024px) { #hidden { display: none; } } max-width 是要检测的宽度

  8. poj 3528 Ultimate Weapon (3D Convex Hull)

    3528 -- Ultimate Weapon 一道三维凸包的题目,题目要求求出三维凸包的表面积.看懂了网上的三维凸包的代码以后,自己写的代码,跟网上的模板有所不同.调了一个晚上,结果发现错的只是数组 ...

  9. Java反射机制(二):通过反射取得类的结构

    在反射运用过程中,如果你想得到一个类的完整结构,那么就要使用到java.lang.reflect包中的几个类: · Constructor  表示类中的构造方法 · Field  表示类中的属性 · ...

  10. hdu 4146 Flip Game

    Flip Game Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...