Spring MVC 请求映射和限定示例

@Controller

默认返回页面地址

@Controller
public class Test{

	@RequestMapping("/index.page")
    public String index(){
        // 会返回 src/main/resources/templates/index.html 文件
        return "index";
    }
}

@RestController

@Controller 和 @ResponseBody 的结合体

@RestController
public class Test{

	@RequestMapping("/index.page")
    public String index(){
        // 返回字符串 index
        return "index";
    }
}

@RequestMapping

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {

    // 这三个货互为别名
	String name() default "";
	@AliasFor("path")
	String[] value() default {};
	@AliasFor("value")
	String[] path() default {};

    // 指定请求方式 RequestMethod。请求不合法响应 405
	RequestMethod[] method() default {};

    // 限定参数。参数不匹配响应 400
	String[] params() default {};

    // 限定 header
	String[] headers() default {};

    // 限定请求类型,content-type,MediaType,不匹配响应 415
	String[] consumes() default {};

    // 响应什么数据
	String[] produces() default {};

}

一些示例

@RestController
public class Test3{
    
    // 请求 url 参数必须有 age,http://localhost:8080/hello?age=18
    @RequestMapping(value="/hello", params="age")
    public void test1(int age){
        
    }
    
    // 请求参数必须有 age 并且值必须为 18,必须携带 username,gender 不能为1(不带 gender 也相当于!=1)
    @RequestMapping(value="/hello2", params={"age=18","username","gender!=1"})
     public void test1(int age, String username, int gender){
        
    }
    
     // 请求中请求有必须要有 token 参数
    @RequestMapping(value="/hello3", headers="token")
    public void test1(@RequestHeader("token") String age){
        
    }
    
    // 当请求的 content-type 是 MediaType.APPLICATION_JSON_VALUE 才会走这个方法
    @PostMapping(value = "/hello4", consumes = MediaType.APPLICATION_JSON_VALUE)
    public String hello(@RequestBody MyRequestBody requestBody) {

        return "Received name: " + requestBody.getName();
    }
    
    // 返回 json,所以方法返回值要是一个对象
    @GetMapping(value = "/hello5", produces = MediaType.APPLICATION_JSON_VALUE)
    public MyResponseBody hello() {
        return new MyResponseBody("Hello, World!");
    }
}

class MyResponseBody {
    private String message;

    public MyResponseBody(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }
}

REST Ful

  • @GetMapping:获取资源
  • @PostMapping:创建资源
  • @PutMapping:更新整个资源
  • @DeleteMapping:删除资源
  • @PatchMapping:更新资源部分信息
posted @   CyrusHuang  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示