REST简介

REST(Representational State Transfer 表现层状态转化)是一种软件架构风格,它是一种针对网络应用的设计和开发方法,可以降低开发的复杂性。提供系统的可伸缩性。

REST是一组架构约束条件和原则 这些约束有

1:使用客户/服务器模型 客户和服务器之间通过一个统一的接口来互相通信

2:层次化的系统 在一个REST系统中 服务端并不会固定地与一个服务器打交道

3:无状态 服务端并不会保存有关客户的任何信息,客户端负责自身状态的维持

4:可缓存 REST系统需要适当的缓存请求 减少服务端和客户端之间的信息传输

5:统一的接口 一个REST系统需要一个统一的接口来完成子系统之间以及服务与用户之间的交互

满足上述约束条件和原则的应用程序或者设计就是RESTful

一、Spring Boot整合REST

在Spring Boot的Web应用中 自动支持REST 也就是说 只要spring-boot-starter-web依赖在pom.xml文件中 就支持REST

下面通过一个RESTful应用示例来讲解

假如在控制器类有如下处理方法

@RequestMapping("/findArticalByAuthor_id/{id}")
public List<Article>findByAuthor_id(@PathVariable("id")Integer id){
return authorAndArticleService.findByAuthor_id(id);
}

那么可以使用如下所示的REST风格的URL访问上述处理方法

http://localhost:8080/ch6_2/findArticleByAuthor_id/2

二、Spring Data REST

在Spring Boot应用中使用Spring Data REST只需引入spring-boot-starter-data-rest的依赖即可

下面通过一个实例讲解Spring Data REST的构建过程

1:修改pom.xml文件 添加MYSQL依赖

<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
-<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<groupId>com.ch</groupId>
<artifactId>ch6_7</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>ch6_7</name>
<description>Demo project for Spring Boot</description>
-<properties>
<java.version>11</java.version>
</properties>
-<dependencies>
-<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>
<!-- 添加MySQL依赖 -->
-<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
<!-- MySQL8.x时,请使用8.x的连接器 -->
</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>
</project>

2:设置上下文路径以及数据源配置信息

server.servlet.context-path=/api
###
##数据源信息配置
###
#数据库地址
spring.datasource.url=jdbc:mysql://localhost:3306/springbootjpa?characterEncoding=utf8
#数据库用户名
spring.datasource.username=root
#数据库密码
spring.datasource.password=root
#数据库驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
####
#JPA持久化配置
####
#指定数据库类型
spring.jpa.database=MYSQL
#指定是否在日志中显示SQL语句
spring.jpa.show-sql=true
#指定自动创建、更新数据库表等配置,update表示如果数据库中存在持久化类对应的表就不创建,不存在就创建对应的表
spring.jpa.hibernate.ddl-auto=update
#让控制器输出的JSON字符串格式更美观
spring.jackson.serialization.indent-output=true 

3:创建持久化实体类Student

部分代码如下 省略部分set和get方法

package com.ch.ch6_7.entity;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "student_table")
public class Student implements Serializable{
	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private int id;//主键
	private String sno;
	private String sname;
	private String ssex;
	public Student() {
		super();
	}
	public Student(int id, String sno, String sname, String ssex) {
		super();
		this.id = id;
		this.sno = sno;
		this.sname = sname;
		this.ssex = ssex;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getSno() {
		return sno;
	}
	public void setSno(String sno) {
ex;
	}
}

4:创建数据访问层

package com.ch.ch6_7.repository;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RestResource;
import com.ch.ch6_7.entity.Student;
public interface StudentRepository extends JpaRepository<Student, Integer>{
	/**
	 * 自定义接口查询方法,暴露为REST资源
	 */
	@RestResource(path = "snameStartsWith", rel = "snameStartsWith")
	List<Student> findBySnameStartsWith(@Param("sname") String sname);
}

在上述数据访问接口中 使用@RestResource注解将该方法暴露为REST资源

至此 基于Spring Data的REST资源服务已经构建完毕 接下来就是使用REST客户端测试服务

三、REST服务测试

在Web和移动端开发时,常常会调用服务器端的RESTful的接口进行数据请求,为了调试,一般会先用工具进行测试,通过测试后才开始在开发中使用

Wisdom REST Client是用Java语言编写的REST客户端,是Github上的开源项目,可以通过http://github.com/Wisdom-Projects/rest-client地址下载

到此这篇关于SpringBoot使用RESTful接口详解的文章就介绍到这了,更多相关SpringBoot RESTful接口内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

SpringBoot使用RESTful接口详解的更多相关文章

  1. Html5页面二次分享的实现

    这篇文章主要介绍了Html5页面二次分享的实现的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. HTML5跳转小程序wx-open-launch-weapp的示例代码

    这篇文章主要介绍了HTML5跳转小程序wx-open-launch-weapp的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. ios – Objective C接口,委托和协议

    所以我试图围绕Objctive-C接口,代理和协议.所以我有一个问题:委托是否必须在单独的文件中,或者它是否是您班级中定义的方法?协议就像java接口吗?

  4. ios – watchOS错误:控制器的接口描述中的未知属性

    解决方法创建IBOutlet作为WKInterfacePicker的属性,您将不会收到消息.

  5. 如何防止其他iOS / Android应用程序使用我的RESTful API?

    我有一个预先存在的iOS&Android应用程序,我正在进行更新,包括RESTful服务API和用于身份验证的Facebook登录.该应用程序的一般流程是:>用户通过Facebook的SDK“登录”到我的应用程序,该SDK将访问令牌返回到我的应用程序.>App调用RESTful服务,包括Facebook访问令牌作为参数(使用HTTPS和SSL)>被呼叫的服务将收到的访问令牌(以及仅存储在我的服务器

  6. 泛型 – MonoTouch和支持变体通用接口

    如果是这样,MonoTouch中针对这种情况的推荐解决方法是什么?解决方法这实际上取决于编译器而不是Mono版本.IOW有些东西可能适用于Mono2.10而不适用于MonoTouch6.x.当前版本的MonoTouch附带了smcs编译器和基于2.1的配置文件.较新的功能,如协方差,需要一个完整的4.0编译器和运行时.未来版本的MonoTouch将提供4.0/4.5运行时和编译器.

  7. 使用IOS进行身份验证的Restful API调用

    我正在使用prestashopAPI使用restfulAPI调用的应用程序.我是IOS的新手我在android中编写了相同的方法:它适用于Android.对于IOS,我使用了这种编码,但我没有从服务器获取数据.请告诉我我做错了什么并提供任何解决方案.谢谢!解决方法您可以通过这种方式构建URL字符串,它应该可以工作:–我不相信使用HTTP头字段

  8. ios – 用于 – 在Counterparts中的ViewController.swift(接口)文件是什么

    有人可以这么善良并解释这个文件的目的是什么?

  9. ios6 – 检测UIViewController上的接口旋转,即使未在 – (NSUInteger)supportedInterfaceOrientations中定义

    解决方法尝试使用UIDevice实例来检测设备物理方向的变化.要开始接收通知,您可以使用类似的内容:要取消注册接收设备旋转事件,请使用此选项:这是deviceDidRotate函数的一个例子:

  10. 接口和扩展

    classSimpleClass:ExampleProtocol{String="Averysimpleclass."varanotherProperty:Int=120funcadjust(){simpleDescription+="Now100%adjust."}funcadd(){simpleDescription+="Now50%add."}}vara=SimpleClass()a.adjust()letaDescription=a.simpleDescriptionstructSimpleStr

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部