当前位置:首页 > CN2资讯 > 正文内容

restapi服务器 restful服务器搭建

2天前CN2资讯


一.Restful简介
REST是一种Web软件结构风格,而不是一种标准,匹配或兼容这种架构风格称之为REST服务,REST服务简洁并且有层次,REST通常基于HTTP,URI和XML以及HTML这些现有的广泛流行的协议和标准,在REST中,资源是由URI来指定的,对资源的增删改查也是通过HTTP协议提供的POST,PUT,GET,DELETE等方法实现,使用REST可以更高效率的利用缓存来提高响应速度,同时REST中的通信会话状态有客户端来维护,这可以让不同服务器来处理一系列请求中的不同请求,进而提高服务器的扩展性,在前后端分离项目中,一个好的项目必然遵循REST架构风格
在Spring Mvc框架中,开发者可以提供RestController注解开发一个RESTful服务,不过Spring Boot对此提供了自动化配置方案,开发者只需要添加相关依赖即可快速构建一个RESTful服务
二.JPA实现REST
在Spring Boot中使用Spring Data JPA和Spring Data Rest可以快速开发一个RESTful服务。
1.基本实现
(1)创建项目:创建Spring Boot项目,添加如下依赖

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.10</version> </dependency> <!--lombok插件--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>

(2)这里的依赖除了添加了数据库相关依赖外还有Spring Data Jpa以及Spring Data Rest的依赖,项目建成后,接下来在配置文件中进行配置,配置如下:

server.port=8088 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.url=jdbc:mysql://localhost:3306/spring_vue?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false spring.datasource.username=root spring.datasource.password=******** spring.jpa.hibernate.ddl-auto=update spring.jpa.database=mysql spring.jpa.show-sql=true spring.jpa.open-in-view=true spring.jpa.properties.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

2.创建实体类

@Entity @Data @Table(name = "book") public class Book { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private Integer id; @Column(name = "name") private String name; @Column(name = "author") private String author; @Column(name = "price") private float price; }

3.创建BookRepository

public interface BookRepository extends JpaRepository<Book, Integer>, JpaSpecificationExecutor{ }

(3)这里继承了JpaRepository,JpaSpecificationExecutor,在JpaRepository中包含了很多现成的增删改查的方法
4.测试
经过上面的步骤,简单的RESTful架构就已经完成了,接下来进行测试:
(1)添加测试,这里我们使用的Postman,RESTful构建成功后,默认的请求路径是实体类名小名加上s,向数据库添加一条数据很容易,发起一个post请求,并写入要添加的数据即可,这里数据以JSON格式为准,如下:

总结:路径:localhost:8088/books,格式:JSON,请求类型:post
(2)分页查询测试,查询是Get请求,分页查询请求路径实体类小写加s,这里为/books,分页查询的每页默认记录数为20条,页数是0,测试如下:

总结:请求类型GET,无参数,路径:localhost:8088/books
(3)根据id查询,若是根据id进行查询,只需要路径后边缀id即可,路径如下:

总结:路径:localhost:8088/books/4,类型:GET

(4)分页查询扩展,添加查询页数,条数,以及添加排序,也是只需要后缀参数即可

总结:路径:localhost:8088/books?page=1&size=3,请求类型:GET
除了分页以外还可以添加排序,如下:

总结:路径:localhost:8088/books?page=1&size=3&sort=id,desc,类型:GET

(5)修改测试,修改需要发送PUT请求,因为修改是根据id进行的,因此路径中需加入id,然后传入修改数据(JSON格式),如下:

总结:路径:localhost:8088/books/15,请求参数图中所示,请求类型:PUT
(6)删除测试,使用DELETE请求可以实现对数据的删除操作,例如删除id为1的记录,路由如下:localhost:8088/books/11
5.自定义请求路径
默认情况下,请求路径都是实体类名加s,如果开发者想对路径进行重定义,通过@RepositoryResource注解可实现

@RepositoryRestResource(path="bs",collectionResourceRel="bs",itemResourceRel="bs") public interface BookRepository extends JpaRepository<Book, Integer>, JpaSpecificationExecutor{ }

代码解释:@RepositoryResource注解的path属性表示将所有请求路径中的books都修改为bs(localhost:8088/bs),collectionResourceRel表示将返回的JSON集合中book集合的key修改为bs,itemResourceRel表示将返回的JSON集合中单个book的key修改为b

6.自定义查询方法
默认的查询方法支持分页查询,排序查询以及按照id查询,如果开发者想要按照某个属性查询,只需要在BookRepository中定义相关方法并暴露出去即可,代码如下:

@RepositoryRestResource(path = "bs") public interface BookRepository extends JpaRepository<Book, Integer>, JpaSpecificationExecutor { @RestResource(path = "author", rel = "author") public List<Book> findByAuthor(@Param("author") String author); }

代码解释:
自定义查询只需要在BookRepository中定义查询方法即可,方法定义好之后可以不添加@RestResource注解,默认路径就是方法名,以上述自定义方法为例,若是不添加@RestResource注解,则默认该方法调用路径为:localhost:8088/bs/search/findByAuthor?author=金庸,如果添加注解,对方法查询路径自定义,其中path就是最新路径,如上方法,他的访问路径为:localhost:8088/bs/search//author?author=金庸 ,如下:

注意:用户可以通过访问:localhost:8088/bs/search,查询目前都暴露了哪些查询方法

7.隐藏方法
(1)默认情况下,继承了Repository接口或是其子类的类都会被暴露出来,即开发者可以执行基本的增删改查方法,如果开发者不想暴露此接口类对对象的操作各种方法,那么就可以作如下配置:

@RepositoryRestResource(exported=false) public interface BookRepository extends JpaRepository<Book, Integer>, JpaSpecificationExecutor { }

这样此接口里边的所有方法都会失效
(2)若是只是不想暴露某一个方法,就可以在此方法上加注解@RestResource,在注解中设定exported=false,这样这个方法就会失效,如下:

@Override @RestResource(exported=false) void deleteById(Integer id);

8.配置CORS(跨域支持)
所有方法支持跨域访问,在接口上加@CrossOrigin注解如下:

@CrossOrigin @RepositoryRestResource(path = "bs") public interface BookRepository extends JpaRepository<Book, Integer>, JpaSpecificationExecutor { @RestResource(path = "author", rel = "author") public List<Book> findByAuthor(@Param("author") String author); }

(2)单某些方法支持跨域,在要支持的方法上加@CrossOrigin注解
9.其他配置
开发者可以为了方便开发添加常用属性,如下:

spring.data.rest.default-page-size=2 spring.data.rest.page-param-name=path spring.data.rest.sort-param-name=sort spring.data.rest.limit-param-name=size spring.data.rest.base-path=/api spring.data.rest.return-body-on-create=true spring.data.rest.return-body-on-update=true


转载于:https://blog.皇冠云.com/13501268/2404421

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/20522.html

    分享给朋友:

    “restapi服务器 restful服务器搭建” 的相关文章

    联通169回程路由怎么样?优缺点及用户评价分析

    在当下的网络环境中,联通169回程路由成为了一个备受关注的话题。很多人对它的表现充满好奇,联通169回程路由究竟如何呢?从基本信息到工作原理,再到它的主要特点,我们一起深入了解一下。 联通169回程路由的基本信息 联通169回程路由主要分为几种类型。我们通常提到的普通网络(AS4837 + AS48...

    AWS在日本的云计算市场发展与投资前景分析

    在讨论AWS在日本的市场背景时,我觉得日本的云计算市场是一个非常吸引人的话题。日本的经济科技发展水平相对较高,企业和政府机构对于云计算的接受度和需求不断增加。这种需求尤为体现于各个行业,比如金融、医疗、教育等。许多传统的行业正在努力向数字化转型,寻找更高效、可靠的解决方案。 2011年,AWS决定在...

    台湾原生IP的优势与选择指南,助你畅享极速网络体验

    在信息化时代,网络的使用变得愈发普遍,原生IP的概念逐渐进入大众视野。简单来说,台湾原生IP指的是源自台湾本地的互联网协议地址。与其他地区的IP不同,台湾原生IP能够有效实现更快速、更稳定的网络连接,给用户带来良好的上网体验。我们生活在一个无时无刻不在与网络打交道的时代,理解这项技术的内涵至关重要。...

    国内服务器不备案能干嘛?灵活便捷的选择和法律风险分析

    在互联网行业中,备案是一个绕不过去的话题。很多人在谈及国内服务器时,提到的第一个问题就是“什么是备案”。简单来说,国内服务器备案是指通过国家相关部门对网站进行注册与审核的过程。这个过程确保网站的内容和运营符合国家政策和法律法规。备案的细节大致包括填写相关信息、提交证明材料以及等待审核。 备案的目的很...

    Sharknode: 开启去中心化区块链的新篇章

    Sharknode生态系统是一个新兴的区块链平台,它为开发者和用户提供了一个强大的环境,以实现去中心化应用与服务。作为一个集成度极高的系统,Sharknode不仅支持了智能合约的创建与执行,还提供了高速、安全的交易体验。这个生态系统旨在突破传统区块链的局限,向用户开放更多可能性,为不同行业带来变革。...

    Putty 下載指南:如何快速安全地安裝和使用Putty

    什么是 Putty Putty 是一个广受欢迎的开源终端仿真程序,专门用于远程管理和访问系统。无论是在企业还是个人使用中,Putty都能让用户安全地连接到其他计算机。它支持多种协议,让用户轻松与远端服务器进行交互。虽然它主要在Windows环境中使用,但也有其他平台的版本可供选择。 我第一次接触Pu...