Spring Boot(十一)Spring Boot中使用REST资源输出

你好,【程序职场】专注于:Spring Boot ,微服务 和 前端APP开发,闲暇之余一起聊聊职场规划,个人成长,还能带你一起探索 副业赚钱渠道,在提升技术的同时我们一起交流 敏捷流程 提高工作效率,从技术到管理一步步提升自我!
 
标签:一个执着的职场程序员!

本文是Spring Boot系列的第十篇,了解前面的文章有助于更好的理解本文:

1.Spring Boot(一)初识Spring Boot框架
2.Spring Boot(二)Spring Boot基本配置
3.Spring Boot(三)Spring Boot自动配置的原理
4.Spring Boot(四)Spring Boot web项目开发
5.Spring Boot(五)Spring Boot web开发项目(2)配置
6.Spring Boot(六)Spring Boot web开发 SSL配置
7.Spring Boot(七)Spring Boot Websocket
8.Spring Boot(八)Spring Boot Websocket实现聊天功能
9.Spring Boot(九)Spring Boot Bootstrap和AngularJS的使用
10.Spring Boot(十)Spring Boot中使用JPA


前言

(一). REST的介绍

(二). Spring Boot的职场

(三). 案例实战

上篇文章为大家讲述了 Spring Boot中 使用JPA;本篇文章接着上篇内容继续为大家介绍SpringBoot中 REST服务的使用。

(一). REST的介绍

Spring Data REST本身就是一个Spring MVC应用程序,它的设计方式应该是尽可能少的集成到现有的Spring MVC应用程序中。现有的(或将来的)服务层可以与Spring Data REST一起运行,只有较小的考虑

Spring Data JPA是基于 Spring Data 的repository 之上,可以将repository自动输出为REST资源,目前Spring Data REST支持将Spring Data JPA,MongoDB,Neo4j,GemFire以及Cassandra的repository自动转换成REST服务。

 

(二). Spring Boot的支持

 

上面介绍了这么多,那么 Spring Boot这么支持REST呢?
Spring Boot对Spring Data REST的自动配置放置在Rest中,Spring Boot 已经为我们自动配置了 RepositoryRestConfigurition 所以使用REST只需要引入 spring -boot -starter-data-rest的依赖,无需做任何配置。

 

Spring Boot 通过在application.properties中配置以 spring.data.rest 为前缀的属性来配置RepositoryRestConfiguration ,例如:

spring.data.rest.base-path:java.net.URIspring.data.rest.default-page-sizespring.data.rest.linit-param-namespring.data.rest.max-page-sizespring.data.rest.page-param-namespring.data.rest.return-body-on-createspring.data.rest.return-body-on-update


(三). 案例实战

 

上面说了REST和在SpringBoot中的支持,下面我们说一下 这么使用
 

1. 创建项目
创建Spring Boot项目,依赖JPA和REST.

 

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1uploading.gif正在上传…重新上传取消

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1uploading.gif正在上传…重新上传取消


2. 添加数据库有关配置

我们这里还和上一篇 jpa的使用一样,我们使用 mysql数据库。需要添加 数据库的依赖:
 

   <dependency>
 <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    <version>5.1.40</version></dependency>

 

还需要在 application.properties中添加 数据库的属性配置
 

spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/springbootrest?useUnicode=true&characterEncoding=utf-8spring.datasource.username=rootspring.datasource.password=root
spring.jpa.hibernate.ddl-auto=updatespring.jpa.show-sql=truespring.jackson.serialization.indent_output=true

属性信息 可以参考上一篇文章的说明.

 

3. 创建实体类
 

@Entitypublic class Person {    @Id    @GeneratedValue    private Long id;    private String name;    private Integer age;    private String address;
    public Person() {    }
    public Long getId() {        return id;    }
    public void setId(Long id) {        this.id = id;    }
    public String getName() {        return name;    }
    public void setName(String name) {        this.name = name;    }
    public Integer getAge() {        return age;    }
    public void setAge(Integer age) {        this.age = age;    }
    public String getAddress() {        return address;    }
    public void setAddress(String address) {        this.address = address;    }
    public Person(Long id, String name, Integer age, String address) {        this.id = id;        this.name = name;        this.age = age;        this.address = address;    }}

 

4. 创建实体类 Repository

public interface PersonRepository extends JpaRepository<Person,Long> {    List<Person> findByNameStartsWith(@Param("name") String name);}

实体类中添加了一个 findByNameStartswith 方法.

 

上面的几步 我们基本完成了使用前准备,有些小伙伴可能还很疑惑,这样怎么看结果使用呢?

当然还需要 测试工具的安装和使用。

 

5. 测试工具的安装

这里我们需要用到Postman ,它是一个支持REST的客户端,我们用它来测试我们的REST资源。

 

postman 有很多种,有浏览器中的插件形式的,还有客户端的,这里我们使用客户端来测试,按照文件 我已经放在 项目目录下。小伙伴可以自行下载,安装,使用。

 

#安装postman

在项目目录下找到改文件,双击安装就行了,很简单的操作。

安装后 会自动打开 一个客户端,界面如下:
 

 

好了,工具安装好了,小伙伴们 我们来做几个测试,大家就明白了,怎么使用了.

 

#获得全部数据

在Postman中使用GET访问http://localhost:8080/persons 获取列表数据:效果如下:

 

细心的小伙伴 这里可以有些疑问,说数据怎么来的呢

关于数据的来源,我们这里添加一个 测试类,在测试类中 通过生成sql 添加数据进入数据库:
 

package org.myyoung.cxzc.springboot_rest;import java.util.Random;public class Test {    public static void main(String[] args) {        String[] addrss = new String[]{"西安", "北京", "郑州", "上海", "武汉", "长沙", "广州", "贵阳", "柳州", "咸阳", "蓝田", "渭南"};        String[] names1 = new String[]{"赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈"};        String[] names2 = new String[]{"强", "亚", "哲", "凡", "路", "举", "昕", "科", "武", "田"};        Random random = new Random();        for (int i = 0; i < 100; i++) {            System.out.println("insert into person(id,address,name,age) values("+i+",'" + addrss[random.nextInt(addrss.length)] + "','" + names1[random.nextInt(names1.length)]+ names2[random.nextInt(names2.length)] + "','" + (20 + random.nextInt(70)) + "');");        }    }    //生成后 添加到 数据库中}

生成数据如下:
 

insert into person(id,address,name,age) values(0,'蓝田','李路','51');insert into person(id,address,name,age) values(1,'柳州','王哲','77');insert into person(id,address,name,age) values(2,'武汉','李亚','81');insert into person(id,address,name,age) values(3,'郑州','赵哲','24');insert into person(id,address,name,age) values(4,'北京','郑亚','53');insert into person(id,address,name,age) values(5,'上海','孙武','37');insert into person(id,address,name,age) values(6,'郑州','李举','57');insert into person(id,address,name,age) values(7,'西安','钱亚','29');insert into person(id,address,name,age) values(8,'武汉','孙武','82');insert into person(id,address,name,age) values(9,'广州','郑路','74');insert into person(id,address,name,age) values(10,'广州','周昕','87');insert into person(id,address,name,age) values(11,'柳州','王哲','72');insert into person(id,address,name,age) values(12,'西安','钱昕','83');insert into person(id,address,name,age) values(13,'郑州','冯举','54');insert into person(id,address,name,age) values(14,'咸阳','王凡','88');

小伙伴 可以直接导入数据库。

上面我们打断了一下  说了一下添加数据,下面我们继续学习使用 postman

 

#获取单一对象
访问http://localhost:8080/persons/1 获得Id为1的对象,

 

 

#查询
在上面的自定义实体类 Repository中定义了findByNameStartsWith方法,若想此方法也暴露为REST资源,需要修改如下:
 

package org.myyoung.cxzc.springboot_rest;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.data.repository.query.Param;import org.springframework.data.rest.core.annotation.RestResource;import java.util.List;
public interface PersonRepository extends JpaRepository<Person,Long> {    @RestResource(path = "nameStartsWith",rel = "nameStartsWith")    List<Person> findByNameStartsWith(@Param("name") String name);}

在postman中访问 http://localhost:8080/persons/search/nameStartsWith?name=陈 可以实现查询操作:

#分页查询

postman中使用get访问 http://localhost:8080/persons/?page=1&size=2
说明:page是页码  size是页面大小


#排序查询
postman中使用get 访问 http://localhost:8080/persons/?sort=age,desc
按照 age属性倒序


#保存
向http://localhost:8080/persons 发起post请求,将我们需要保存的数据放置在请求体中,数据类型设置为json 格式如下

{"name":"cc","address":"西安","age":24}


#删除
我们删除一条数据 id是10的数据  使用 delete 方式访问http://localhost:8080/persons/10
 

 

删除成功后 再次查询,提示 404NotFound 说明资源不存在,已经删除了

 

最后我们来说一下 定制
1. 定制跟路径
如果我们需要定制根路径的话 只需要在 application.properties中添加定义即可

spring.data.rest.base-path=/api

 

测试我们访问REST资源的路径就成了   http://localhost:8080/api/persons

2. 定制节点路径

当然我们还可以定制节点路径:例如 上面的 实体类 Repository上使用的@RepositoryRestResource注解的path属性进行修改,代码如下:

package org.myyoung.cxzc.springboot_rest;
import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.data.repository.query.Param;import org.springframework.data.rest.core.annotation.RestResource;
import java.util.List;@RepositoryRestResource(path="people")public interface PersonRepository extends JpaRepository<Person,Long> {    @RestResource(path = "nameStartsWith",rel = "nameStartsWith")    List<Person> findByNameStartsWith(@Param("name") String name);}


此时我们访问REST服务的地址变成 

http://localhost:8080/api/people
 

 

ok,本篇内容到这里就完成了,如果小伙伴还有疑问,可以 关注我,我们一起进步

 

参考:
1. 《JavaEE开发的颠覆者 Spring Boot实战》

 

本案例下载地址:

https://github.com/ProceduralZC/itcxzc/tree/master/springboot_rest

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉默的闪客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值