RESTful风格的API接口开发 Spring Cloud

RestFul API接口 RestFul API是最近项目组开发过程中遇到的一种开发风格。本文主要介绍在日常开发过程中对于RestFul API的理解。一、RestFul API是什么?RestFul API个人认为是一种设计风格、开发风格;REST全文是:Representational State Transfer;翻译后为:表现层状态转换。是针对于前后端分离的分布式开发场景应运而生的。RestFul API提供了一种设计风格,开发风格。 阅读详情

学习笔记 大佬绕路,小白多篇文章整合总结篇

简单背景

网络程序正朝着移动设备的方向发展,前后端分离、APP,最好的交互交互方式莫过于通过API接口实现。既然要进行数据交互,那么这接口就得有讲究了:既要实用,又要优雅好看!

那么,如何写一套漂亮的API接口呢?

本次我们先了解一下Spring对API接口开发的支持,然后我们采用Spring Boot搭建项目,借用Swagger2列出API接口,便于查阅。

接口返回格式

API接口要求返回的格式是 application/json,我们知道网页返回的格式一般是 text/html,因此,Spring Boot为写接口,提供了两种实现方式:类注解 和 方法注解。

  • 类注解 @RestController

我们只需要在类上写上注解 @RestController,那么此Controller返回格式就都是text/json。

/*类注解*/
@RestController
@RequestMapping("/sdust/v1/sdcNode")
public class SdcNodeController {

    @Autowired
    private SdcNodeApp sdcNodeApp;
    ……
}
  • 方法注解 @ResponseBody

我们只需要在某个方法上写上注解 @ResponseBody,那么该方法返回格式是text/json。如下图

/*类注解*/
@Controller
@RequestMapping("/sdust/v1/sdcNode")
public class SdcLnodeController {

    @Autowired
    private SdcNodeApp sdcNodeApp;
    @RequestMapping("/lef")
    @ResponseBody
    public String getInfo() {
        return "";
    }
    ……
}

值得提醒的是,虽然都是都可以,但更推荐使用类注解,会显得我们的编码风格十分统一,代码更加紧凑,不至于看起来零散。

我们来看下 @RestController 的源码

@Controller
@ResponseBody
public @interface RestController {
……
}

请求方式源码

@RequestMapping
在``RequestMapping`的源码中提到,这种支持任意请求方式,类似于自适应。

@Mapping
public @interface RequestMapping {
……
}

@GetMapping
客户端只能用 GET 方式请求,适用于查询数据

@RequestMapping(method = RequestMethod.GET)
public @interface GetMapping{
……
}

@PostMapping
客户端只能用 POST方式请求,适用于提交数据。

@RequestMapping(method = RequestMethod.POST)
public @interface PostMapping{
……
}

@DeleteMapping
客户端只能用 DELETE方式请求,使用于删除数据。

@RequestMapping(method = RequestMethod.DELETE)
public @interface DeleteMapping{
……
}

@PutMapping
客户端只能用 PUT方式请求,使用于修改数据(但在实际使用中,我个人建议还是采用POST方式较为妥当)。

@RequestMapping(method = REquestMethod.PUT)
public @interface PutMapping{
……
}

以上请求我是在接口开发中经常使用的,图片是注解源码。当然还有其他一些。关于请求方式及使用范围,可以参考 RESTful API

接收参数

  • @RequestParam

我们来写一个示例并说明:

public String getInfo(@RequestParam(name = "param", 
                                        required = false, 
                                        defaultValue = "param dafault value") String param)

name代表提交参数名。
required意思是这个参数是否必需,默认true,没有该参数,无法调用此方法;这里设为false,有无该参数都可以调用。
defaultValue如果该参数值为空,那么就使用默认值。

  • @PathVariable
    @RequestMapping("/get-info/{param}")
    public String getInfo(@PathVariable("param") Object param)

我们可以在请求方法后面直接跟值,省去了 ?参数名= 。
这种一般配合 @DeleteMapping、@PutMapping使用。

  • @RequestHeader

这个使用了获取提交数据的 Headers 的值。我是用来接收 TOKEN。后面会举例。

数据格式

下面我们来了解下,Spring Boot 可以支持的数据格式。
我一般常用的基本数据类型有 int、String。

而我们在日常中,还可能有 Array、List、Map……

那么,Spring Boot支持吗?我们如何解决?并且统一化呢?

JSON!

毫无疑问JSON可以帮助我们解决这个问题,当然XML也是可以的。

在Controller层当中使用一些封装的方法,讲实现的内容封装到自己定义的数据结构中返回给前端就可以实现通过JSON传递数据

至于前端方面,先看 Ajax 代码:

$.ajax({
        headers : {
            Accept: "application/json; charset=utf-8",
            'token' : '9B4BF951093F1F1A40BB2DAAA30B3838'
        },
        url: URI + '/admin/blog/add',
        type: 'POST', 
        async: true,   
        data: {
            ...
        },
        timeout: 3000,   
        dataType: 'json', 
        beforeSend: function(xhr){},
        success: function(data, textStatus, jqXHR){
            console.log(data);
        },
        error: function(xhr, textStatus){
            console.log(xhr);
        },
        complete: function(){}
 })

现在的问题是如何获取 token的值?没错,就是 @RequestHeader("token")!

如果我们没在Controller,那怎么办

答案是

    String token = request.getHeader("token");
    System.out.println(token);
SpringBoot开发Restful风格的接口实现CRUD功能 实战---基于SpringBoot开发一个Restful接口,接口实现CRUD功能。 阅读详情

相关推荐

Spring Cloud OpenFeign 工作原理解析

背景 OpenFeign 是 Spring Cloud 家族的一个成员, 它最核心的作用是为 HTTP 形式的 Rest API 提供了非常简洁高效的 RPC 调用方式。 如果说 Spring Cloud 其他成员解决的是系统级别的可用性,扩展性问题, 那么 OpenFeign 解决的则是与开发人员利益最为紧密的开发效率问题。 使用方式 在介绍 ...

萧萧的专栏 2万+

SpringCloud微服务快速入门实战课程【2020版】

SpringCloud是目前流行的微服务框架,在各大互联网公司都有广泛的应用,同时在企业招聘面试时也会要求对微服务技术栈有所了解和掌握。SpringCloud是一套完整的微服务解决方案,基于SpringBoot框架。 本课程以通俗易懂的方式讲解SpringCloud技术栈,由浅入深,帮您快速入门! 课程内容包括: 1. 微服务简介 2. SpringCloud技术栈 3. Restful API简介和设计原则 4. Restful API用法 5. 使用Postman测试接口 6. 使用Swagger2生成API文档 7. Eureka注册中心 8. Feign客户端 9. Hystrix断路器 10. Zuul网关 11. Ribbon负载均衡 12. 微服务的面试题 教学全程采用笔记+代码案例的形式讲解,每个知识点都有详细的讲解,通俗易懂!!! 讲师介绍

Java必知必会系列:RESTful API与Web服务

作者:禅与计算机程序设计艺术 1.背景介绍 在互联网公司开发中,通常都会涉及到前端与后端的分离,使得开发效率得到提升。而后端向外提供各种各样的API接口,供前端调用,从而实现前后端分离开发模式,缩短了开发周期,增强了应用的可伸缩性、可用性和安全性。RESTful是一种新的Web服务标准,它定义了一组

AI天才研究院 875

API接口的RESTful设计

前言:在移动互联网、分布式和微服务盛行的今天,现在好多大点的项目都会采用的微服务框架,前后端分离方式。前后端的工作职责越来越明确,现在的前端都称之为大前端,技术栈以及生态圈都已经非常成熟,可以进行移动端跨平台开发,也可以通过node.js写服务端的Controller。 一般系统的大致整体架构图如下: 需要说明的是,这个架构也太简单了吧,什么网关、Redis缓存、MQ消息中间件都没有。因为这篇主要介绍的是API接口,所以我们聚焦点,其他的模块小伙伴们自行去补充。 1、前后端接口交互 前端和后端进

何哥的博客 3791

【云原生】Spring Cloud Alibaba 之 Feign 远程调用 实战

分布式系统下远程调用该如何选择?RestTemplate 与 Feign,Feign是最佳选择!

wanghuichen的博客 6443

点云处理工具——pclpy安装

pclpy介绍及详细安装过程 文章目录pclpy简介下载:安装测试 pclpy简介 pclpy是点云库(PCL)的Python绑定。使用CppHeaderParser和pybind11从头文件生成。 这个库正在积极开发中,api可能会发生变化。所包含的模块确实可以工作,但测试还不完整。目前只支持Windows和python 3.6 x64。 许多其他python库尝试绑定PCL。最流行的是python-pcl,它使用Cython。虽然Cython非常强大,但绑定c++模板并不是它的强项(PCL大量使用模.

图像处理、SLAM、PCL、OpenCV爱好者 1万+

Restful API的开发

->RESTful风格在HTTP请求方法上做文章,约定。

2301_79567474的博客 1228

Petalinux 2021.1 + Vivado 2021 实战:手把手教你为Zynq板卡移植Linux并搞定AXI DMA驱动

本文详细介绍了基于Petalinux 2021.1和Vivado 2021工具链,为Zynq开发板移植Linux系统并开发AXI DMA驱动的全流程。从环境配置、硬件设计到驱动适配与性能优化,提供了实战避坑技巧和版本特异性问题的解决方案,帮助开发者快速构建高速数据传输系统。

weixin_42641741的博客 387

RESTful API接口基本内容

RESTful API接口基本内容 目录 RESTful API接口基本内容 一、RESTful是什么? 1.1.基本特点 1.2.设计概念和准则 1.3.http协议 二、RESTful与SOAP WebService 架构有什么区别? 2.1.WebService 架构概念 2.2.两者对比 三、如何实现符合RESTful规范的API? 3.1.资源路径(URI) 3....

keavykk的博客 3788

利用ArcMap实现遥感图像语义分割标注的完整流程解析

本文详细解析了利用ArcMap进行遥感图像语义分割标注的完整工作流。从工程创建、数据导入、SHP文件创建,到实战勾画地物、要素转栅格,再到最终的裁剪对齐,提供了每一步的关键操作与避坑指南。该方法特别适合处理大尺寸、带地理坐标的遥感影像,能高效产出精准对齐的图像-标签对,为后续深度学习模型训练奠定可靠的数据基础。

gpu4optimizer的博客 1215

SpringBoot Redis入门(一)——redis、Lettuce、Redisson使用

Lettuce是SpringBoot自带的Redis客户端,性能比Redis要好, 是线程安全的,支持同步编程,异步编程,响应式编程,自动重新连接,主从模式,集群模块,哨兵模式Redisson 是一个在 Redis 的功能基础上实现的 Java 驻内存数据网格客户端。实现了分布式和可扩展的 Java 数据结构,提供很多分布式相关操作服务,例如分布式锁,分布式集合,可通过 Redis 支持延迟队列。

朗朗的博客 3833

[Spring Cloud][4]RestTemplate 和 RESTful 详解

摘要: RestTemplate是Spring提供的同步HTTP客户端工具,遵循RESTful风格进行API调用。REST(表现层状态转移)是一种基于HTTP协议的架构风格,通过URL定位资源,并用GET/POST/PUT/DELETE方法操作资源。RESTful API强调统一接口和资源化,但实际开发中可能因复杂业务需求或兼容性问题而受限。 RestTemplate封装了HTTP连接管理,简化远程调用,但存在硬编码IP、负载均衡、URL复用性差等微服务常见问题。后续可通过Spring Cloud(如服务注

Yeeear的博客 938

海康工业相机LabVIEW二次开发实战——参数配置优化与图像高效存储

本文详细介绍了海康工业相机在LabVIEW平台上的二次开发实战,重点解析了相机参数配置的优化方法与图像高效存储策略。通过剖析曝光、增益、触发模式等核心参数的设置逻辑,并结合生产者-消费者设计模式,指导开发者构建稳定、高效的图像采集与异步存储流程,有效提升工业视觉项目的开发效率与系统稳定性。

weixin_29306317的博客 221

Java 后端项目(基于 Spring Boot / Spring Cloud)的通用规范与配置清单

包:全小写,点分隔,分层清晰。类:大驼峰(PascalCase),名词,表达实体或功能。方法:小驼峰(camelCase),动词 + 名词,如。变量:小驼峰,名词,明确意义。常量:全大写,下划线分隔,如。枚举:类名大驼峰,枚举值全大写。接口 URL:资源名词复数,小写,使用层级。

Very_easygoing的博客 280

青龙人形机器人硬件平台设计全解析:从构型到控制系统的实战指南

本文深度解析了青龙人形机器人硬件平台的设计全流程,从需求分析、构型设计到核心系统实现。文章详细阐述了其43个自由度的仿生构型、高动态性下肢设计、灵巧作业系统以及分布式控制架构,并探讨了旋转关节与直线关节等关键技术选型,为开发者提供了从理论到实践的完整硬件设计指南。

weixin_29248313的博客 382

Unreal使用nDisplay制作裸眼3D(9宫格)

摘要: nDisplay是虚幻引擎的分布式实时渲染技术,可将内容同步输出到多个显示设备(如LED墙、投影仪等),构建沉浸式可视化系统。其核心功能包括:分布式渲染(支持多台设备协同处理高分辨率内容)、空间透视校正(通过追踪观众动态调整画面几何关系)以及虚拟拍摄应用。配置时需设置集群组件(Cluster、Host、Node、Viewport)定义渲染逻辑,空间组件(nDisplayScreen、ViewPoint)确定投影关系。文中以9宫格配置为例,详细演示了从工程创建到影片渲染合成的全流程,最终通过多视口合成

TxNet 608

Day03-15.开发接口-测试我的学习计划接口04:28

qq_41577703的博客 32

华为OD机试2025A卷 - BOSS的收入(Java & Python& JS & C++ & C )

华为OD机试2025A卷 - BOSS的收入(Jav一个XX产品行销总公司,只有一个boss,其有若干一级分销,一级分销又有若干二级分销,每个分销只有唯一的上级分销。规定,每个月,下级分销需要将自己的总收入(自己的+下级上交的)每满100元上交15元给自己的上级。现给出一组分销的关系,和每个分销的收入,请找出boss并计算出这个boss的收入。输入:分销关系和收入:[[分销id 上级分销id 收入], [分销id 上级分销id 收入], [分销id 上级分销id 收入]]输出:[boss的ID, 总收入]

算法大师! 1172

微服务下基于RESTFUL风格实现统一的接口设计(JSON API)

RESTFUL JSON APIJSON API解决的问题服务架构参考文档效果展示返回单个对象返回集合对象名词解析实现步骤相关技术栈需求简述项目结构简图统一的依赖管理POMRESTFUL JSON API 项目搭建POMapplicationapplication.yml核心代码核心代码的关系图 JSON API 解决的问题 在微服务架构下,前后端分离的项目如何通过统一的数据结构进行数据交互。 服务架构 适用范围:微服务架构 + 前后端分离 参考文档 JSON API中文版 JSON API官方英文版 效果

weixin_41756573的博客 3152

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

spring cloud Restful架构

1、 Rest基础架构实现处理是spring clound核心所在,其基本的操作形式请学习SpringBoot相关知识。本次为了清晰的讲解spring clound开发,我们将创建一套新的微服务架构:(部门微服务)(Dept),我们将融合Mybatis开发技术实现整体微服务的创建处理。如果要想进行SpringCloud开发,那么一定要对SpingBoot有所了解,同事本次也将融合MyBatis开发...

Singularinty的博客 1158

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Spring Cloud、Spring Cloud Alibaba微服务实战

Spring Cloud是一个基于Spring Boot实现的微服务架构开发工具。它为微服务架构中涉及的配置管理、服务治理、容错管理、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。Spring Cloud是分布式微服务架构的一站式解决方案,它提供了一套简单易用的编程模型,使我们能在Spring Boot的基础上轻松地实现微服务系统的构建。Spring Cloud提供以微服务为核心的分布式系统构建标准。

草原印象的博客 945

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Spring Cloud Spring Cloud Netflix微服务实战

Spring Cloud是一个基于Spring Boot实现的微服务架构开发工具。它为微服务架构中涉及的配置管理、服务治理、容错管理、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。Spring Cloud是分布式微服务架构的一站式解决方案,它提供了一套简单易用的编程模型,使我们能在Spring Boot的基础上轻松地实现微服务系统的构建。Spring Cloud提供以微服务为核心的分布式系统构建标准。

草原印象的博客 1082

Spring Cloud微服务架构

符合"云"理念的大趋势-Spring Clund分布式服务治理的框架

每天都要开心呀(#^.^#) 2万+

Spring-cloud项目访问Restful API 404的问题

目录结构应该如下:

忍法阡陌的博客 1235

在 Spring Cloud 中,服务间的通信有哪些方式?

在Spring Cloud中,服务间的通信方式有很多种选择,包括RESTful API、RPC、消息队列、统一消息服务和WebSocket等。不同的通信方式适用于不同的场景,开发者可以根据实际需求选择合适的通信方式。本文只是介绍了常用的几种通信方式,实际上还有其他的通信方式,例如GraphQL、WebRTC等。不同的通信方式各有优缺点,开发者需要根据具体场景进行选择和折衷。总之,Spring Cloud提供了灵活多样的服务间通信方式,可以满足各种不同的需求,帮助开发者构建可靠、高效的微服务架构。

一位努力搬砖程序员。在这里,我会分享关于编程技巧、项目实战经验以及对新技术的见解。希望通过我的文章能够帮助你在技术路上更进一步。期待与你共同学习和成长! 1459

如何解决基于 Redis 的网关鉴权导致的 RESTful API 拦截问题?

在上一遍文章《基于Redis的网关鉴权方案与性能优化》我们设计了结合Redis缓存,通过网关鉴权的方式,很大程度上提高了开发的效率,也是企业中最常见的鉴权架构方案。但是遇到RESTful风格的api,不能精细化的控制,就比如我们公司的老项目,统一采用POST请求方式,就规避了RESTful API的问题,但是新项目可不这么玩了,实际开发中哪怕我不遵循RESTful API,但是我接口是可以随便定义的,不限制任何的请求方式,那么我们的网关该如何鉴权呢?

日常分享工作中的一些技术干货。 694
上一篇: Java开发中IO流的使用以及异常的处理记录
下一篇: REST风格接口学习
rain start to pour
博客等级 码龄10年 29粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值