SpringMVC实现Restful api请求方法

java 复制代码
package com.example.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

@SpringBootApplication
@RestController
@RequestMapping("/index")
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @GetMapping("/{id}")
    public String index(@PathVariable Long id) {
        return "GET请求接收成功,id为:" + id;
    }

    @GetMapping
    public String index2(@RequestParam Long id, @RequestParam String name) {
        return "GET请求接收成功,id为:" + id + ", name为:" + name;
    }

    @PostMapping
    public String save(@RequestBody Map<String, Object> map) {
        System.out.printf("map:" + map);
        return "POST请求接收成功,map为:" + map;
    }

    @PutMapping("/{id}")
    public String update(@PathVariable Long id, @RequestBody Map<String, Object> map) {
        System.out.printf("ID:" + id + ", map:" + map);
        return "PUT请求接收成功";
    }

    @DeleteMapping("/{id}")
    public String delete(@PathVariable Long id) {
        System.out.printf("ID:" + id);
        return "DELETE请求接收成功,id为:" + id;
    }
}

类注解

注解 作用
@SpringBootApplication 标记这是 Spring Boot 启动类,开启自动配置、组件扫描
@RestController = @Controller+ @ResponseBody,表示每个方法的返回值直接作为响应体(而不是跳转页面)
@RequestMapping("/index") 类级别统一前缀,所有接口路径都以 /index开头

接口注解

1.GET-查询(路径传参)

java 复制代码
    @GetMapping("/{id}")
    public String index(@PathVariable Long id) {
        return "GET请求接收成功,id为:" + id;
    }
  • 访问:GET /index/100
  • @PathVariable:把 URL 路径中的 {id} 提取为方法参数
  • 适用场景:查询某个具体资源(RESTful 风格推荐把 id 放在路径里)

2.GET - 查询(问号传参)

java 复制代码
    @GetMapping
    public String index2(@RequestParam Long id, @RequestParam String name) {
        return "GET请求接收成功,id为:" + id + ", name为:" + name;
    }
  • 访问:GET /index?id=1&name=tom
  • @RequestParam:接收 URL ? 后面的查询参数
  • 适用场景:带条件的查询、筛选、分页

3.POST - 新增(请求体传参)

java 复制代码
    @PostMapping
    public String save(@RequestBody Map<String, Object> map) {
        System.out.printf("map:" + map);
        return "POST请求接收成功,map为:" + map;
    }
  • 访问:POST /index,body 中放 JSON,例如 {"name":"tom","age":18}
  • @RequestBody:把请求体的 JSON 自动转换成 Java 对象(这里用 Map 接收)
  • 适用场景:新增资源

4.PUT -修改

java 复制代码
    @PutMapping("/{id}")
    public String update(@PathVariable Long id, @RequestBody Map<String, Object> map) {
        System.out.printf("ID:" + id + ", map:" + map);
        return "PUT请求接收成功";
    }
  • 访问:PUT /index/100,body 放要修改的 JSON 数据
  • 同时用了 路径参数(哪个资源) + 请求体(改成什么)
  • 适用场景:更新资源

5.DELETE - 删除

java 复制代码
    @DeleteMapping("/{id}")
    public String delete(@PathVariable Long id) {
        System.out.printf("ID:" + id);
        return "DELETE请求接收成功,id为:" + id;
    }
  • 访问:DELETE /index/100
  • 适用场景:删除某个资源
相关推荐
SomeB1oody9 小时前
【RustyML入门】6.3. 并行归约
开发语言·后端·机器学习·rust·教程
Profile排查笔记10 小时前
指纹浏览器哪个好?从 Profile、代理、权限和自动化能力判断是否适合
前端·人工智能·后端·自动化
用户9385156350710 小时前
用 AI 结对编程从 0 搭一个"单词后台管理系统":Next.js + Supabase + Drizzle + shadcn/ui 全记录
后端·postgresql·next.js
爱学习的小邓同学11 小时前
Golang --- (1)第一个Golang程序
开发语言·后端·golang
小灰灰搞电子12 小时前
Rust+Slint 实现的“DNA双螺旋”加载动画源码分享
后端·rust·slint·加载动画
面向Google编程12 小时前
向量库不再囤数据:Milvus 3.0 零拷贝直读数据湖
后端
IT_陈寒14 小时前
Redis内存警告竟是因为这个不起眼的配置项
前端·人工智能·后端
Python私教14 小时前
AI 漫剧角色一进分镜就变脸?把提示词升级成“角色 ID + 镜头合同”
后端
Python私教14 小时前
一次生成 20 个角色却全都撞脸:我用“角色合同”重做了批量生成流程
后端
用户5944041035615 小时前
Go 语言高性能 Web 服务开发:基于 Gin + GORM + Redis 构建 RESTful API
后端