栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot中的Rest映射(即如何使用form表单进行PUT和DELETE方法的提交),常用的几种参数注入注解(详细介绍)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot中的Rest映射(即如何使用form表单进行PUT和DELETE方法的提交),常用的几种参数注入注解(详细介绍)

一:SpringBoot中的Rest映射

1.Rest风格介绍
首先解释什么是Rest风格

REST风格
REST 是一种软件架构风格,其本身是围绕HTTP的URI资源进行约束。

URI 中不能有动词,因为 URI 本身是资源的表示,所以网址中不能有动词,只能由名词,动词由 HTTP 协议中的操作:GET、POSE、PUT、DELETE 四种方法表示。
如果有自定以的状态码,由于 REST 本身是根据 HTTP 协议进行规范的,所以尽量使用 HTTP 协议的状态码。
200:OK 请求响应成功,服务器返回数据,该操作是幂等的
201:CREATED 新建或者修改数据成功
204:NOT CONTENT 删除数据成功
400:BAD REQUEST 用户发出的请求有问题,该操作是幂等的
401:Unauthoried 表示用户没有认证,无法进行操作
403:Forbidden 用户访问是被禁止的
404:Not Found 请求资源不存在
422:Unprocesable Entity 当创建一个对象时,发生一个验证错误
500:INTERNAL SERVER ERROR 服务器内部错误,用户无法判断请求是否成功
503:Service Unavailable 服务器不可用状态,多半是服务器问题,例如CPU占用率打等。
风格差别:

Rest风格样例:

@RestController
public class TestController {
    
    @GetMapping("/user")
    public String getUser(){
        return null;
    }
    
    @PostMapping("/user")
    public String postUser(){
        return null;
    }
    
    @PutMapping("/user")
    public String putUser(){
        return null;
    }
    
    @DeleteMapping("/user")
    public String deleteUser(){
        return null;
    }
}

2.如何在form表单中使用put和delete方法提交
错`误案列:

@RestController
public class TestController {



    @GetMapping("/user")
    public String getUser(){

        return "GET";
    }

    @PostMapping("/user")
    public String postUser(){
        return "POST";
    }

    @PutMapping("/user")
    public String putUser(){
        return "PUT";
    }

    @DeleteMapping("/user")
    public String deleteUser(){
        return "DELETE";
    }
}

html

测试REST风格

如果使用以上代码进行form表单的访问的话,会出现请求的PUT和DELETE,都会走get接口,
:查看源码

在yaml文件中开启

spring:
  mvc:
    hiddenmethod:
      filter:
        enabled: true


由于springboot的HiddenHttpMethodFilter里面配置了,所以可以使用以下方法
请注意:使用PUT或者DELETE方法进行提交,form表单中method必须等于post

测试REST风格
二:SpringBoot中常用的几种参数注解

1.注解:@PathVariable、@RequestHeader、@ModelAttribute
controller层

@GetMapping("/car/{id}/owner/{username}")
    public Map getCar(@PathVariable("id") Integer id,
                                     @PathVariable("username") String username,
                                     @PathVariable Map pv,
                                     @RequestHeader("User-Agent") String userAgent,
                                     @RequestHeader Map header){
        Map map = new HashMap<>();
        map.put("id",id);
        map.put("username",username);
        map.put("pv",pv);
        map.put("userAgent",userAgent);
        map.put("header",header);
        return map;
    }

    @GetMapping("/car/{id}")
    public Map getCarParm(@PathVariable("id") Integer id,
                                         @RequestParam("age") Integer age,
                                         @RequestParam("interest") List interest,
                                         @RequestParam Map params){
//                                         @CookieValue("_ga") String _ga,
//                                         @CookieValue("_ga") Cookie cookie){
        Map map = new HashMap<>();
        map.put("id",id);
        map.put("age",age);
        map.put("interest",interest);
        map.put("params",params);
//        map.put("_ga",_ga);
//        map.put("cookie",cookie);
        return map;
    }

    @PathVariable、



    @RequestHeader、



    @ModelAttribute、

2.使用原生的mvc中的HttpServletRequest request

 @GetMapping("/goto")
    public String goToPage(HttpServletRequest request){
        request.setAttribute("msg","成功了。。。。");
        request.setAttribute("code",200);
        return "forward:/success";
    }
    @ResponseBody
    @GetMapping("/success")
    public Map success(@RequestAttribute("code") Integer code,
                          @RequestAttribute("msg") String msg,
                          HttpServletRequest request){
        Map map = new HashMap<>();
        map.put("msg",msg);
        map.put("code",code);
        Object msg1 = request.getAttribute("msg");
        if(msg.equals(msg1)){
            map.put("status",true);
        }
//        map.put("request",request);
        return map;
    }

3.使用@RequestBody注入

测试@RequestBody获取数据 用户名: 邮箱:
@PostMapping("/save")
    @ResponseBody
    public Map save(@RequestBody String content){
        Map map = new HashMap<>();
        map.put("STring",content);
        return map;

    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/820783.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号