`
Adan-Chiu
  • 浏览: 21803 次
社区版块
存档分类
最新评论

Spring Data REST 快速构建 restful api 应用

 
阅读更多

      

Spring Data REST

       Spring Data REST基于Spring Data的repository之上并自动将其导出为REST资源。目前Spring Data REST支持Spring Data JPA、Spring Data MongoDB、Spring Data Neo4j、Spring Data GemFire、Spring Data Cassandra的 repository 自动转换成REST服务。简单点说,Spring Data REST把我们需要编写的大量REST模版接口做了自动化实现.

 

      利用spring boot + spring-data-rest + spring-data-jpa实现基本的增删改查api

dependencies {
    compile 'com.alibaba:druid:1.1.17'
    compile 'org.springframework.boot:spring-boot-starter-data-jpa'
    compile 'org.springframework.boot:spring-boot-starter-data-rest'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    runtimeOnly 'mysql:mysql-connector-java'
}

 配置spring boot

server.port = 80

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://192.168.134.128:3306/db_book?serverTimezone=CTT&useSSL=false&useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true
spring.datasource.username = root
spring.datasource.password = 

spring.jpa.database=mysql
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect

 创建Book实体类:

package com.wise.tiger.domain;

import javax.persistence.*;
import java.time.LocalDate;

@Entity
@Table(name = "tb_book")
public class Book {
    /**
     * id
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    /**
     * 图书名称
     */
    @Column(length = 12,nullable = false)
    private String title;
    /**
     * 图书作者
     */
    @Column(length = 12)
    private String author;
    /**
     * 图书价格
     */
    private float price;
    /**
     * 出版社信息
     */
    @Column(length = 25)
    private String publisher;
    /**
     * 图书简介
     */
    @Lob
    private String intro;
    /**
     * 出版日期
     */
    private LocalDate publishDate = LocalDate.now();
// ******************setter and getter**********//
}

 创建BookRepository接口

package com.wise.tiger.repository;

import com.wise.tiger.domain.Book;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;

@RepositoryRestResource(path = "book")
public interface BookRepository extends JpaRepository<Book,Integer> {
}

      在Repository接口上添加@RepositoryRestResource注解,并添加了一个Path为book。这样即可实现Book实体类的RESTFul风格的所有(基于Repository接口定义的api)接口。没有service层也没有Controller。

启动项目spring boot进行测试

测试

  • 发现服务:http://localhost:80/


     
    "http://localhost/book{?page,size,sort}"为资源路径,其中page,size,sort为分页排序参数
  • 以GET方式请求所有资源列表http://localhost/book发现book列表为空

     
  • 以POST方式请求资源:http://localhost/book,提交json数据作为参数(可接收application/hal+json或application/json类型数据)添加一本图书信息


    可以继续多添加几本图书后再次以GET方式请求 
  • PUT方式请求修改图书信息
  • DELETE请求删除图书信息:http://localhost/book/2
  • 分页和排序
    分页参数:

    page:当前页,从0开始,默认值0

    size:每页显示记录数,默认值20

    可通过参数指定:http://localhost/book/?page=1&size=5

    排序参数
    sort
    格式:http://localhost/book/?page=1&size=5&sort=title,desc
    其中title为排序属性名称,desc为降序,升序为asc
           要在自己的查询方法中使用分页,需要更改方法签名以接受其他可分页参数,并返回一个页面而不是列表。例如,以下查询方法导出到/book/search/titleStartsWith并支持分页:
    @RestResource(path = "titleStartsWith", rel = "titleStartsWith")
    Page findByTitleStartsWith(@Param("title") String title, Pageable p);
  • 自定义Controller
     到目前为止,我们只写了很少的代码,只写了repository(DAO),但是却已经实现了增删改查REST api。我们甚至连 controller都没有写,就访问了这么多的REST url。
      我们只通过@RepositoryRestResource(path = "book")在 repository中就能够把 /path路径暴露出来。便一切都有了,这就是spring-data-rest的魔力。上面我们所访问的 /book/* 的地址,是从repository中通过 @RepositoryRestResource 注解暴露出去的,现在我们写一个自己的Controller来暴露额外的REST资源,访问路径/book/search/listBooks
@RepositoryRestController
@RequestMapping("/book")
public class PersonController {

    @RequestMapping(method = GET, value ="/search/listBooks")
    public String list(){
        return "查询得到符合要求全部图书信息,实际去repository中查 ";
    }
}
 
分享到:
评论

相关推荐

    Spring Data REST简化RESTful开发.docx

    Spring Data REST 是基于 Spring Boot 和 Spring Data 项目构建 RESTful API 的强大工具,极大地简化了开发者的工作。在传统的 RESTful 开发中,我们需要手动编写控制器(Controller)来处理 HTTP 请求并映射到业务...

    spring-data-rest-angular例子

    2. **Spring Data REST**: Spring Data REST是Spring Data项目的一部分,它允许开发者快速地将Spring Data Repository接口暴露为RESTful服务。通过简单的注解,如`@RepositoryRestResource`,可以将数据库操作转化为...

    采用Spring框架构建你的RestfulAPI

    综上所述,使用Spring构建RESTful API涉及到从初始配置到具体接口实现的多个步骤,包括Web应用的初始化、REST API的构建、数据转换、异常处理等方面。通过这些技术,开发者可以构建出高效、灵活且易于扩展的API服务...

    Spring boot restful api demo

    总结,Spring Boot结合RESTful API设计原则,为开发者提供了快速构建高效、易于维护的Web服务的平台。这个"Spring Boot RESTful API demo"项目展示了如何创建、查询和管理资源的基本步骤。通过实践和扩展,可以实现...

    Java_学习如何使用Spring Data REST使用基于REST的超媒体数据持久化.zip

    在Java开发领域,Spring Data REST是一个非常重要的框架,它允许开发者快速构建基于RESTful API的数据访问层。这个压缩包文件“Java_学习如何使用Spring Data REST使用基于REST的超媒体数据持久化.zip”包含了关于...

    用于springdatarest的前端基于vue2iview3iviewadmin2制作

    在IT行业中,Spring Data REST是一种流行的技术,它允许开发者快速构建RESTful API,与后端数据存储进行交互。这个项目是专门针对Spring Data REST服务创建的前端应用,使用了现代前端框架Vue.js的第二版(Vue2)...

    rest-api:使用Spring Boot,Spring Data JPA,MySQL构建的RESTful API

    使用Spring Boot,Spring Data JPA,MySQL构建的RESTful API 安装 本地运行 确保已安装 。 克隆或下载存储库。 $ git clone https://github.com/bizarrecode/rest-api.git $ cd rest-api 编辑数据库配置。 $ ...

    spring boot3+jpa+lombok+mapstruct实现的restful api例子

    在本项目中,"spring boot3+jpa+lombok+mapstruct实现的restful api例子"是一个集成多种技术的示例,旨在展示如何高效地构建RESTful API服务。下面将详细介绍这些关键技术及其相互间的配合。 1. **Spring Boot 3**:...

    spring rest

    接着,"SpringBoot-SpringDataJPA-RESTFul-CRUD"文件名揭示了Spring Data JPA的使用。Spring Data JPA是Spring对Java Persistence API(JPA)的封装,提供了一种声明式的方式来进行数据库操作,如CRUD(创建Create、...

    Springboot_restful_api

    在这个项目“Springboot_restful_api”中,开发者使用了SpringBoot来构建RESTful风格的API,这是一种广泛用于现代Web服务的设计模式,允许客户端和服务器之间通过HTTP协议交换信息。 REST(Representational State ...

    Springboot data jpa + springboot data rest demo

    SpringBoot Data JPA 和 SpringBoot Data REST 是两个非常重要的组件,它们可以帮助开发者快速构建基于Java的Web服务。本文将深入探讨这两个技术,并结合一个实际的Demo来解释它们的工作原理和如何在项目中应用。 ...

    SpringData数据层全栈方案高级应用Java代码.zip

    SpringData REST模块将Repository自动暴露为RESTful服务,方便前后端分离的开发模式,通过HATEOAS(超媒体作为应用状态的引擎)实现服务的发现和导航。 这个压缩包中的Java代码示例将覆盖以上这些知识点,包括但不...

    spring mvc restful service

    Spring MVC 是一个强大的Java框架,用于构建Web应用程序,特别是对于基于模型-视图-控制器(MVC)架构的应用。在本文中,我们将深入探讨如何利用Spring MVC创建RESTful服务,这些服务可以处理字符串、JSON和XML数据...

    SpringData入门到精通

    3. **SpringData REST**:能够自动将Repository接口暴露为RESTful服务,使得数据访问可以通过HTTP协议进行,极大地提高了开发效率。 4. **SpringData Commons**:提供了通用的Repository功能,如分页、排序等,是...

    spring-rest-api:构建 RESTful Web 服务

    1. `pom.xml`:这是Maven项目的配置文件,其中包含了项目依赖,如Spring Boot、Spring Web等,使得我们能够快速构建和运行REST服务。 2. `src/main/java`:源代码目录,包含主要的Java类,如主应用类(`Application....

    Spring Data教程

    5. **Spring Data REST**:Spring Data REST模块将Repository暴露为RESTful服务,使得数据可以直接通过HTTP协议进行操作。这对于构建Web服务和微服务架构非常有用。 6. **MongoDB支持**:Spring Data也支持非关系型...

    SpringBootDataRestDemo:Spring Boot Data Rest演示

    总的来说,"SpringBootDataRestDemo"项目是一个实用的示例,展示了如何使用Spring Boot和Spring Data REST快速构建RESTful服务。通过学习和实践这个项目,开发者可以更好地理解和掌握现代微服务架构中的数据交换技术...

    khs-spring-data-rest:使用 Spring Data 实现持久化的 Spring MVC Restful 示例

    khs-spring-data-rest Spring MVC Restful API 示例实现 Spring MVC REST API Primer 这是一个 Eclipse Maven Web 应用程序。 单击以获取安装和启动说明。

    springRestful小例子

    在IT行业中,Spring框架是Java企业级应用开发的首选框架,而RESTful风格的API设计则是现代Web服务的标准。本文将深入探讨Spring框架如何实现RESTful API,以及这些概念在"springRestful小例子"中的具体应用。 首先...

    Spring Data JPA

    - **Spring Data REST**:与Spring Data REST配合,可以快速构建RESTful API,暴露Repository接口供HTTP客户端使用。 **4. 进阶话题** - **存储过程支持**:Spring Data JPA可以通过@EntityGraph注解来优化加载策略...

Global site tag (gtag.js) - Google Analytics