当前位置: 首页 > news >正文

【Springboot入门- RESTful服务的支持】

  • 使用 @RestController 和 @RequestMapping
    @RestController 注解表明该类中的所有方法都会返回结果直接写入HTTP响应体中,而不是使用视图解析器。@RequestMapping 注解用于将HTTP请求映射到控制器的处理方法上。
@RestController
public class MyController {@RequestMapping("/hello")public String hello() {return "Hello, World!";}
}
  • 支持不同的HTTP方法
    Spring Boot 提供了 @GetMapping、@PostMapping、@PutMapping、@DeleteMapping 和 @PatchMapping 注解来处理不同的HTTP请求方法。
@GetMapping("/users/{id}")
public User getUserById(@PathVariable Long id) {// ...
}@PostMapping("/users")
public User createUser(@RequestBody User user) {// ...
}
  • 请求参数和路径变量
    使用 @RequestParam 来获取查询参数,使用 @PathVariable 来获取路径中的数据。
@GetMapping("/users/{id}")
public User getUserById(@PathVariable Long id, @RequestParam(required = false) String name) {// ...
}
  • 返回值
    返回一个对象,Spring Boot 会自动将其转换为JSON(默认使用Jackson库)
@GetMapping("/users")
public List<User> getAllUsers() {// ...
}
  • 异常处理
    使用 @ExceptionHandler 或 @ControllerAdvice 来全局处理异常
@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(Exception.class)public ResponseEntity<String> handleException(Exception e) {return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());}
}
  • 使用 RestTemplate 调用外部RESTful服务
    Spring Boot 提供了 RestTemplate 来调用外部RESTful服务。
@Service
public class MyService {private final RestTemplate restTemplate;public MyService(RestTemplateBuilder restTemplateBuilder) {this.restTemplate = restTemplateBuilder.build();}public Details someRestCall(String name) {return this.restTemplate.getForObject("/{name}/details", Details.class, name);}
}
  • 版本控制
    在设计RESTful API时,应该考虑版本控制。通常,版本号被包含在URL路径中。
@GetMapping("/api/v1/users/{id}")
public User getUserByIdV1(@PathVariable Long id) {// ...
}
  • 测试
    使用Spring Boot的测试工具来测试RESTful服务。
@RunWith(SpringRunner.class)
@WebMvcTest(MyController.class)
public class MyControllerTest {@Autowiredprivate.MockMvc mockMvc;@Testpublic void testHello() throws Exception {mockMvc.perform(get("/hello")).andExpect(status().isOk()).andExpect(content().string("Hello, World!"));}
}

相关文章:

  • 组合(整体-部分)模式
  • RealSense、ZED 和奥比中光Astra几款主流相机介绍及应用
  • [遇到问题] Word中插入公式横线“-”变成了长连字符
  • centos9 nginx 版本
  • SpringBoot框架下体育馆管理系统的构建
  • Leetcode 887. 鸡蛋掉落
  • SpringBoot启动过程简述 和 SpringCloud 的五大组键
  • C语言编写一个五子棋游戏-代码实例讲解与分析
  • 给 git 添加扩展命令
  • Qt实现远程开关机
  • Flink Lookup Join的工作原理、性能优化和应用场景
  • systemd使用入门
  • 数据结构——顺序表(基础代码题)
  • golang 如何生成唯一的 UUID
  • 一个OpenHarmony rk3568编译问题
  • [译]前端离线指南(上)
  • 2017-09-12 前端日报
  • Angular数据绑定机制
  • CODING 缺陷管理功能正式开始公测
  • gops —— Go 程序诊断分析工具
  • Idea+maven+scala构建包并在spark on yarn 运行
  • Java,console输出实时的转向GUI textbox
  • JAVA之继承和多态
  • java中的hashCode
  • MySQL-事务管理(基础)
  • ReactNative开发常用的三方模块
  • React的组件模式
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 聚类分析——Kmeans
  • 如何优雅地使用 Sublime Text
  • 十年未变!安全,谁之责?(下)
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 树莓派用上kodexplorer也能玩成私有网盘
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (152)时序收敛--->(02)时序收敛二
  • (4)logging(日志模块)
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (一)UDP基本编程步骤
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .NET 分布式技术比较
  • .net 获取url的方法
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • [12] 使用 CUDA 加速排序算法
  • [ACP云计算]易混淆知识点(考题总结)
  • [Algorithm][动态规划][01背包问题][目标和][最后一块石头的重量Ⅱ]详细讲解
  • [BetterExplained]书写是为了更好的思考(转载)
  • [BZOJ3757] 苹果树
  • [CSAWQual 2019]Web_Unagi ---不会编程的崽