Spring rest

SpringMVC项目Rest风格 REST(Representational State Transfer),表现形式状态转换,它是一种软件架构风格。传统方式一般是一个请求url对应一种操作,这样做不仅麻烦,也不安全,因为会程序的人读取了你的请求url地址,就大概知道该url实现的是一个什么样的操作。查看REST风格的描述,你会发现请求地址变的简单了,并且光看请求URL并不是很能猜出来该URL的具体功能,所以REST的优点有:隐藏资源的访问行为,无法通过地址得知对资源是何种操作,书写简化。但是我们的问题也随之而来了,一个相同的url地址即可 阅读详情

1.Rest的基本原理

Rest与RPC几乎没有任何关系。RPC是面向服务的,并关注行为和动作,而REST是面向资源的,强调描述应用程序的事物和名词。

为了理解REST是什么,我们将它的首字母缩写拆分成不同的组成部分



简单说,rest就是将资源的状态以合适的形式从服务器转移到客户端(或者反之)

2.Spring是如何支持REST的


3.编写面向资源的Controller



4.执行REST动作

REST是关于资源状态转移的。需要一些动作(verb)来应用于这些资源。对于给定的资源常见的操作时在服务器上对资源进行创建、检索、更新和删除。

每个HTTP方法具有两个特性:安全性和幂等性。如果一个方法不改变资源的状态,就认为他是安全的。幂等的方法可能改变也可能不改变状态,但是每一次请求

和多次请求具有相同的作用。按照定义,所有安全的方法都必须是幂等的。




SpittleController的getSpittle()方法使用了@RequestMapping注解,并使用method属性设置其处理GET请求。

使用put更新资源



HTTPStatus.NO_CONTENT说明响应状态要设置为HTTP状态码204.这个状态码一位置请求被成功处理了。


处理delete请求


使用Post创建新的资源


这个方法的@RquestMapping与之前的不同没有value属性,就是说createSpittle()将处理/spittles的请求

这个方法使用@ResponseSatus设置状态码,这次状态码设置成了201来表明一个资源被成功创建了。

所以方法最后要做的事情就是设置Location头信息来包含资源的URL.

尽管这不是201响应的墙纸要求,但可以在响应体中返回完成的实体表述。


5表述资源

表述是Rest中很重要的一个方面。他是关于客户端和服务器端真对某一资源是如何通信的。任何给定的资源都几乎可以用任意形式来表述。

可以使用JSON、XML、html、pdf、excel等方式来展现。控制器本身通常不关心资源如何表述。控制器以java对象的方式来处理资源。

Spring提供了两种方法将资源的java表述形式转换为发送客户端的表述形式:

*基于视图渲染进行协商

*HTTP消息转换器


5.1协商资源表述

当控制器处理方法完成时,通常会返回一个逻辑视图名,如果方法不直接返回逻辑视图名(例如方法返回void)那么逻辑视图名,会来源于

请求的URL。DispatcherServlet接下来会将视图的名字传递给一个视图解析器。要求它来帮助确定应该用那个视图来渲染请求结果。


在面向人类访问的应用程序中,选择的视图通常为HTML。

当要将视图名解析为能够产生资源表述的视图时,需要从另一个维度来考虑。视图不紧要匹配视图名,而且选择的视图要适合客户端。

Spring的ContentNegotiatingViewResolver是一个特殊的视图解析器。他要作为一个bean配置在Spring应用上下文中.



ContextNegotiatingViewResolver如何工作

*确定请求的媒体类型

accept头信息并不总是可靠的。如果是web浏览器,那并不保证客户端需要的类型就是浏览器在accept头所发送的值。

ContentNegotiatingViewResolver将考虑到Accept头部信息并使用它请求的媒体类型。但它会首先查看URL的文件扩展名。如果

URL在结尾处有文件扩展名的,它将扩展名与mediaTypes中的条目进行匹配。

如果文件扩展名不能得到任何媒体类型,那就会考虑从请求中的Accept头部信息。如果请求头中不包含accept信息,那么将使用

defaultContentType属性设置的媒体类型。


影响如何选择媒体类型



*查找视图


*使用http信息转换器


典型的Spring mvc控制器方法在结束时会将一些信息放到模型中,然后到达一个视图来为用户渲染这些数据。

但是当控制器的工作是产生资源表述的时候,有一种更直接的方法可以绕过模型和数据。在这种风格的处理器方法中,

控制器返回的对象将自动转化为适合客户端的表述形式,要使用这项新技术,首先要将@ResponseBody注解添加到控制器处理方法上。


在ResponseBody中返回资源状态

正常情况下,当处理方法返回Java对象时,这个对象会放在模型中,并在视图中渲染使用。但如果处理方法使用了@ResponseBody,那表明

Http信息转换器机制会发挥作用,并将返回的对象转换为客户端需要的人一格式。

例如



@ResponseBody注解会告知Spring,我们要将返回的对象作为资源发送给客户端,并将其转换为客户端可接受的表述形式。

Spring 提供了多个HTTP信息转换器,用于实现资源表述与各种java类型之间的互相转换。





例如,假设客户端通过请求的accept头信息表明它能接受application/json,并且在jackson json在类路径下,那么处理方法返回的对象将交给MappingJacksonHttpMessageConverter,并由其转换为客户端的Json表述形式。


在ReqeustBody中接收资源状态

在Restful会话的另一端,客户端可能会以JSON、XML或其他内容格式给我们送过来一个对象来。@RequestBody也能对客户端发过来的对象做相同的事情


请求的Content-Type头信息必须是application/json

Jackson JSON库必须包含在应用程序的类路径下



了解RestTemplate的操作 


Spring Boot示例 - 2. 使用Spring Boot + Spring Data REST + Spring Data JPA构建符合HATEOAS规范的REST应用 一、概述一般使用Spring MVC + Spring Data JPA即可构建REST服务,但是这种方式要完整实现Controller层,Service层和Repository层,需要编写很多样板代码,诸如注释,XML配置等。 使用Spring Data REST可以轻松构建超媒体驱动(hypermedia-driven)的REST服务。 Spring Data REST本身是个Spring 阅读详情

相关推荐

使用Spring MVC创建REST API

近几年来,以信息为中心的表述性状态转移(Representational Statae Transfer,REST)已成为替换传统的SOAP Web服务的流行方案。SOAP一般会关注行为和处理,而REST关注的是要处理的数据。1.了解REST1.1 REST的基础知识首先,REST与RPC几乎没有任何关系。RPC是面向服务的,并关注于行为和动作;而REST是面向资源的,强调描述应用程序的事物和名词。

薛小强Forever 2996

Spring REST简介

一、REST 1.1 REST特性 REST具有如下特性: 表述性(Representational):REST资源实际上可以用各种形式来进行表述,包括XML、JSON(JavaScript Object Notation)甚至HTML——最适合资源使用者的任意形式; 状态(State):当使用REST的时候,我们更关注资源的状态而不是对资源采取的行为; 转移(Transfer):REST涉及...

书香水墨 4364

Spring REST Docs 简易教程

Spring REST Docs 简易教程 本文相当于官方文档的部分翻译版,完整文档请参考Spring REST Docs 官方文档 ,本文涉及内容: 简介 Spring REST Docs 整合 为API编写文档 配置 Asciidoctor 使用简介 Demo 源码...

anxpp的博客 8255

【Spring实战】17 REST服务介绍

REST(Representational State Transfer) 服务的出现是为了提供一种简单、灵活、可伸缩的分布式系统架构,使得各种应用和服务能够更加轻松地相互通信和协作。RESTful 架构的原则已经成为构建许多现代 Web 服务和 API 的基础。

好久不见的流星 1531

Spring REST Template 快速入门

本篇将使用Spring Boot发布REST Service,使用Spring REST Template来调用服务本篇代码均已上传到GITHUB,https://github.com/IloveZiHan/restfultemplate.git介绍我们之前都使用过HttpClient来发送HTTP请求,但我们很多时间都需要将HttpClient请求或者响应的数据转换为Java对象,HttpCli...

qq_40208605的博客 3248

Spring REST 配置CSRF防护

Spring REST 配置CSRF防护内容从以下几个方面展开 什么是CSRF防护 如何运用CSRF进行防御(WEB) 如何将CSRF防御,运用到REST中 1.什么是CSRFCSRF 攻击简单来说,是多Tab页面浏览器的一个安全漏洞,比如你正在访问A网站,此时如果浏览器有你的cookie,并且session没有过期,此时你去访问B网站,那么B网站可以直接调用A网站的接口,而A网站则认为是你本人进行

laojiaqi的专栏 6624

spring实现REST的三种形式

中秋过后,也该写点东西了。本文主要讲,spring实现rest的三种形式。下面依次讲解 第一种形式,采用http get的请求方式,即问好传参的方式: 1、请求示例:http://127.0.0.1:8080/spring03/app/query?from=20190001&to=20190004 2、后端示例代码 /** * 参数可以添加注解,但是命名要跟请求时的变量一致...

AndyWei147的博客 1826

Spring Data REST极速构建REST API

Spring Data REST是Spring Data的子项目,基于Spring Data Repositories自动将实体和Repository转换为超媒体驱动的REST API。它遵循RESTful原则和HAL标准,通过极简配置即可生成规范化的CRUD端点,支持分页、排序和关联操作。核心优势在于快速开发、减少样板代码、自动实现HATEOAS,适用于原型开发和管理后台API。但需注意安全风险,建议结合Spring Security保护端点,对于复杂业务仍需自定义控制器。该工具显著提升简单数据API的开

HTTP404_CN的博客 1448

【Spring实战】18 Spring中REST应用详细介绍

REST 服务的出现是为了提供一种简单、灵活、可伸缩的分布式系统架构,使得各种应用和服务能够更加轻松地相互通信和协作。本篇文章将会对 REST 在 Spring 中的应用注解结合代码逐一详细说明。

好久不见的流星 1502

Spring Data REST为后端领域注入新活力

Spring Data REST是Spring生态系统中的重要组件,旨在简化RESTful API的开发过程。本文旨在全面解析该框架的工作原理、核心特性以及实际应用场景,帮助开发者理解如何利用它提升后端开发效率。文章将从基础概念入手,逐步深入到实现原理和实战应用,最后探讨扩展话题和未来趋势。每个章节都包含详细的技术分析和实践指导。:基于Spring Data的RESTful API自动生成框架HATEOAS。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 1430

TOD和PPS精确时间同步技术

授时

u010783226的专栏 1万+

Spring Data REST

一 点睛 1 什么是Spring Data REST Spring Data JPA是基于Spring Data的Repository之上,可以将Repository自动输出为REST资源。目前Spring Data REST支持将Spring Data JPA、Spring Data MongoDB、Spring Data Neo4j、Spring Data Gemfire以及Spring ...

实践求真知 1488

kaggle——信用卡欺诈检测项目实战

笔记第一步:了解题目,确定任务第二步:场景分析第三步:数据预处理看是否有缺失值查看样本类别分布数据不均衡解决办法数据值标准化/归一化第四步:特征工程1)查看特征分布情况,把不同类别下特征分布相差不大的特征删除掉2)特征缩放第五步:模型训练处理不平衡样本交叉验证求取最好的模型参数第六步:模型评估使用下采样数据训练与测试使用下采样数据训练与测试(不同的阈值对结果的影响)使用下采样数据训练,原始数据进行测试原始数据进行K折交叉验证使用原始数据进行训练和测试查看ROC曲线逻辑回归阈值选择过采样总结 第一步:了解题目

weixin_45942265的博客 1万+

(九)Spring Rest

Spring REST 使得构建 RESTful Web 服务变得简单而直观。通过使用 Spring 提供的注解和功能,开发人员可以快速创建强大的 REST API,同时享受 Spring 的强大支持。通过遵循 RESTful 设计原则、合理使用 HTTP 方法、路径和状态码,开发人员能够构建出简洁、可维护的 API。

qq_50847694的博客 957

基于STM32的超声波流量计设计

本项目基于STM32微控制器设计了一种超声波流量计,采用时间差法测量液体或气体的流速,计算流量并通过显示屏实时显示,同时支持远程数据传输。本设计通过STM32微控制器实现了基于时间差法的超声波流量计,集成了超声波信号采集、流量计算、状态显示和远程通信功能。本系统需要实现超声波信号的实时采集与处理,计算流速和流量,并将数据通过OLED显示和无线模块上传。系统需具备高精度的时间测量能力和良好的抗干扰能力。通过计算超声波在顺流和逆流方向上的传播时间差,结合管道直径与流体特性,计算流速并进一步计算流量。

stm32d1219的博客 2349

向量乘法器设计

同样基于Wallace树乘法器,我们来构造向量乘法器。 在一些矩阵运算中经常用到向量的相乘运算,本例以4维向量为例子介绍向量乘法器的verilog HDL设计。 设向量a = (a1, a2, a3, a4), b = (b1, b2, b3, b4)。 则a 与 b的点乘为:a * b = a1 b1 + a2 b2 + a3 b3 + a4 b4, 即向量对应位置的值相乘,再相加...

Reborn Lee 2969

使用 Spring Boot 构建 REST API

springboot 构建实现crud

qq_37954693的博客 1333

计算机组成原理(二)—— 数据的表示与运算

本章目录引言一、数制与编码1.1 进位计数制1.1.1 进制及转换1.1.2 真值、机器数1.2 BCD码1.3 ASCII 码1.4 校验码1.4.1 奇偶校验码1.4.2 海明码1.4.3 CRC循环冗余码二、定点数的表示和运算2.1 定点数的表示2.1.1 无符号2.1.2 有符号(原码、反码、补码、移码)2.2 定点数的运算2.2.1 移位运算2.2.2 加减运算(溢出判断)2.2.3 乘法运算2.2.4 除法运算2.3 强制类型转换2.4 数据的存储和排列三、浮点数的表示和运算3.1 浮点数的表示

S mile0804的博客 7473

【序列晋升】39 Spring Data REST 的优雅实践,让数据交互更符合 REST 规范

Spring Data REST是Spring生态系统中一个功能强大的框架,它能够将Spring Data仓库自动转换为符合RESTful风格的API,同时遵循HATEOAS原则。

愚者Turbo的博客 1281

图像处理入门007:图像处理中的数学基础:线性代数与卷积

一种:把 OpenCV 当黑盒,调用,效果不对就乱调参数;另一种:理解每个像素是怎么被周围邻域"加权平均"的,理解核翻转、边界填充、stride 的含义。前者能干活,后者能解难题。一旦遇到自定义核(比如 ISP 上的锐化)、深度学习反向传播、医学图像重建,你就必须把卷积、相关、矩阵乘法这些基本功捡回来。线性代数三件套:向量点积、矩阵乘法、线性变换;2D 卷积的数学定义:核翻转、滑动窗口、边界填充。并手写一个,验证它与和的结果完全一致(误差 < 1e-9)。f∗gn∑m−∞∞f。

专注:太空算力、AI infra、异构调度、大模型成本工程 387

【人工智能】在 cc-switch 中配置 AnyRouter 接入 Claude Code 完整指南

本文介绍了在cc-switch工具中配置AnyRouter中转服务以接入Claude Code的详细步骤。主要内容包括:1) 准备API令牌和端点地址;2) 填写基础信息和模型参数;3) 保存配置并重启终端生效;4) 常见问题排查方法。重点强调了API地址格式、模型ID准确性以及配置写入的必要性,帮助用户顺利完成中转服务配置,实现Claude 4.5版本的正常使用。

奶爸的编程之路,也就一周冷个三天 3103

Spring Rest Shell 使用教程

Spring Rest Shell 使用教程 1. 项目介绍 Spring Rest Shell 是一个由 Spring 社区开发的轻量级命令行工具,旨在简化与 RESTful 服务的交互过程。它利用 Java 和 Spring Boot 的强大功能,让开发者能够通过命令行接口(CLI)直接与 REST 服务进行交互,类似于操作文件系统。Spring Rest Shell 支持 API 测试、调试...

gitblog_00344的博客 727

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Spring data rest

spring-data-rest的详细讲解 一、基本配置和环境 1. 所用的环境: idea jdk 1.8 mysql 5.7 maven 3.3.9 postman … 2. 创建springboot工程:(idea直接创建) 2.1. pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http...

itman_cx的博客 594

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Spring MVC REST

代表性状态转移(REST)是一种体系结构样式,它描述了通过HTTP公开Web服务的最佳实践,强调了性能,可伸缩性,简单性,可修改性,可见性,可移植性和可靠性。 REST通过使用名词(而非动词)的URI公开资源,支持一组有限的操作(GET,PUT,POST,DELETE)。 客户端可以请求可以链接到其他资源的特定表示形式(HTML,XML,JSON等),并将超媒体用作应用程序状态引擎(HATE...

cunfen0516的博客 204

Spring MVC 创建 REST API

REST 全称是 Representational State Transfer REST 将资源的状态以最适合客户端或服务端的形式从服务端的形式从服务器端转移到客户端(或者反过来)。 在 REST 中资源通过 URL 进行识别和定位 Spring 支持的创建 REST 资源: 控制器可以处理所有的 HTTP 方法(POST、GET、PUT、DELETE、PATCH) 借助 @PathVaria...

百般回首曾经的相遇,留下的只是一缕残忆 1224
上一篇: Spring 事务
下一篇: Spring rest 4.0
GeoJava
博客等级 码龄19年 3粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值