Restful设计规范Java版学习


前言

Restful规范是为了让接口更直观和更加的符合规范,所有的东西都可以是一种资源。


一、编写代码

RestfulController.java

package com.student.controller;

import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * Create by zjg on 2023/4/27
 */
@RequestMapping("/api/v1/")
@RestController
public class RestfulController {
    @GetMapping("sources")
    public void getSources(@RequestParam(required = false) Integer pageSize,@RequestParam(required = false) Integer pageNumber){
        if(null!=pageSize&&null!=pageNumber){
            System.out.println(String.format("根据分页信息pageSize:%s,pageNumber:%s,获取匹配的资源",pageSize,pageNumber));
        }
        System.out.println("获取所有的资源");
    }
    @GetMapping("sources/{id}")
    public void getSourceById(@PathVariable("id") String id){
        System.out.println(String.format("获取id为%s的资源",id));
    }
    @PostMapping("sources/{id}")
    public void postSourceById(@PathVariable("id") String id){
        System.out.println(String.format("新增id为%s的资源",id));
    }
    @PutMapping("sources/{id}")
    public void putSourceById(@PathVariable("id") String id){
        System.out.println(String.format("更新id为%s的资源",id));
    }
    @DeleteMapping("sources/{id}")
    public void deleteSourceById(@PathVariable("id") String id){
        System.out.println(String.format("删除id为%s的资源",id));
    }
}

二、测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


三、状态码

响应码响应描述
200请求成功
201资源已创建
204请求成功,但无返回内容
304缓存有效
400语义有误,当前请求无法被服务器理解,请求参数错误
401当前请求需要用户认证
403用户已认证,但权限不足
404请求源未在服务器上被发现
405请求方法不能被用于请求相应的资源
500服务端内部错误
502网关错误
504网关超时

总结

v1代表版本号,升级可另起一个Controller重写接口,能通过url完成不同版本之间的接口访问。
回到顶部

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
# 基于springBoot编写的RESTFul API 本项目可用于快速搭建基于springBoot的RESTFul API服务,同时集成了swagger作为接口的在线文档与调试工具,数据交互格式建议是JSON格式。 ## 增强理解 [Spring Boot集成swagger2生成接口文档](https://www.jianshu.com/p/a115c9367a59) [自定义RESTful API服务规范](https://www.jianshu.com/p/bdea0385a77e) ## RESTFul API 首先本项目是一个RESTFul API服务的demo,与此同时再集成了一些做API常用的工具。 对于RESTFul API服务各有各的见解,网上大多是自己封装了controller层统一格式返回,通常情况下,不管你怎么请求,它总是响应你的http状态码为200。 而本项目中充分结合了HTTP状态码规范,使用ResponseEntity + HttpStatus的方式完成我们的API。当然,你想做一个完全具有RESTFul风格的API,你需要具有良好的RESTFul风格的资源设计能力。 ## 全局异常处理 采用@RestControllerAdvice + @ExceptionHandler的方式对全局异常进行处理,同时加入了常见的一些自定义异常类。 ## 参数验证器 采用spring提供的@Validated注解结合hibernate的validator进行验证,你只需要在你的验证实体对象中使用验证注解,如@NotNull、@NotBlank等,同时在你的controller方法中加入@Validated注解即可,验证结果信息已经由全局异常处理器帮你做好了。 ## TOKEN验证 当我们的API需要登录后才能访问时,简单做法是登录验证成功后给客户端生成一个token,客户端后续的请求都需要带上这个token参数,服务端对这个token进行验证,验证通过即可访问API。本项目中也集成了token的生成,同时通过拦截器统一验证了token的有效性,这依赖于redis来存储token,但这也是比较流行的做法。 你只需要在controller中需要的地方加入@AccessToken注解即可,同时如果你需要当前登录的用户信息,只需要在方法参数中加入@UserPrincipal注解修饰参数UserPrincipalVO即可。 代码示例: ``` // 在登录业务类中注入用户TOKEN组件 @Autowired private UserTokenComponent userTokenComponent; // 登录 public UserPrincipalVO login(String account, String pwd) { // 登录逻辑验证 ~~~~~ // 验证成功后,可得到用户信息 // 根据用户信息创建token, 可以把用户其它信息填充进UserPrincipalVO中,提供了全参的构造方法 UserPrincipalVO userPrincipalVO = new UserPrincipalVO(account); return userTokenComponent.createToken(userPrincipalVO); } ``` ``` @ApiOperation(value = "需要登录后才能访问的API") @GetMapping("/token") @AccessToken public ResponseEntity<UserPrincipalVO> testToken(@ApiIgnore @UserPrincipal UserPrincipalVO user) { return ResponseEntity.ok(user); } ``` ## 参数签名验证 当我们的API需要作为开放接口时,一般会为接入方分配对应的accessKey和secret,接入方每次请求我们的API时,需要把accessKey和secret与其他参数进行统一的方式签名得到签名串sign,同时把sign作 ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
学习Java开发的路线通常包括基础语法、数据结构与算法、面向对象编程、Java SE核心技术、网络编程、数据库操作、企业级应用框架(如Spring、Hibernate等)、并发编程、实战项目经验以及持续的学习和实践。以下是一个简单的Java学习路线PDF指南: 1. **入门阶段**: - 学习Java基础知识:变量、数据类型、控制结构(if, for, while等)。 - Java语言规范(JLS)与IDE环境设置(Eclipse/IntelliJ IDEA)。 2. **中级阶段**: - Java SE核心:类与对象、封装、继承、多态。 - 数组和集合框架(ArrayList, HashMap等)。 - 异常处理与IO流。 - 数据结构与算法基础(了解并实现常用算法)。 3. **进阶阶段**: - JDBC与SQL:数据库连接、操作和管理。 - 多线程与并发编程(synchronized, ExecutorService)。 - NIO和网络编程(Socket编程)。 - 文件I/O与序列化。 4. **高级阶段**: - Spring框架:了解基本配置和依赖注入。 - Hibernate或MyBatis:ORM技术应用。 - RESTful API设计与HTTP协议。 - MVC设计模式。 5. **实战项目**: - 开发小型项目,如Web应用、桌面应用、移动应用等,运用所学知识。 - 参与开源项目,提升实际经验。 6. **持续学习**: - 阅读技术博客和文档,关注最新技术发展。 - 参加线上或线下的技术分享会。 - 持续学习新技术,如微服务、云计算、大数据等。 对于PDF资源,你可以在线搜索“Java学习教程”、“Java开发学习笔记PDF”或“Oracle官方Java教程”,可能会找到一些适合初学者的免费或付费资源。记得挑选权威、系统且更新及时的资料,并结合实际练习加深理解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值