【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 {
    @Autowired
    private.MockMvc mockMvc;

    @Test
    public void testHello() throws Exception {
        mockMvc.perform(get("/hello"))
                .andExpect(status().isOk())
                .andExpect(content().string("Hello, World!"));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值