SpringBoot的RESTful风格

一、不接收参数

4种请求格式

package com.atguigu.boot03web.controller;


import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;

@RestController
public class HelloController {

    @RequestMapping("/bug.jpg")
    public String hello(){
        //request
        return "aaaa";
    }


//    @RequestMapping(value = "/user",method = RequestMethod.GET)
    @GetMapping("/user")
    public String getUser(){

        return "GET-张三";
    }

//    @RequestMapping(value = "/user",method = RequestMethod.POST)
    @PostMapping("/user")
    public String saveUser(){
        return "POST-张三";
    }


//    @RequestMapping(value = "/user",method = RequestMethod.PUT)
    @PutMapping("/user")
    public String putUser(){

        return "PUT-张三";
    }

    @DeleteMapping("/user")
//    @RequestMapping(value = "/user",method = RequestMethod.DELETE)
    public String deleteUser(){
        return "DELETE-张三";
    }

}

接收参数

package com.atguigu.boot03web.controller;
import com.atguigu.boot03web.bean.Person;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
public class ParameterTestController {

    /**
     * 数据绑定:页面提交的请求数据(GET、POST)都可以和对象属性进行绑定
     * @param person
     * @return
     */
    @PostMapping("/saveuser")
    public Person saveuser(Person person){

        return person;
    }


    // /car?id=1,这个的意思是获取的是id=1的car,这只是请求而不是映射,相当于把id带到请求参数上,但是这样不方便
    // 我们用{xx}来接收xx的值,例如 car/2/owner/zhangsan ,获取到的请求是id为2的car,username为zhangsan的owener
    //  car/2/owner/zhangsan      这里全是springmvc的知识
    @GetMapping("/car/{id}/owner/{username}")
    //                 @PathVariable:路径变量注解,根据路径上的变量的id值赋给变量id
    public Map<String,Object> getCar(@PathVariable("id") Integer id,
                                     @PathVariable("username") String name,
                      //@PathVariable,不指明单一的路径变量则把全部的路径变量都拿过来
                                     @PathVariable Map<String,String> pv,
                      //@RequestHeader,获取请求头User-Agent里面的信息
                                     @RequestHeader("User-Agent") String userAgent,
                      //@RequestHeader,不指明获取哪个请求头信息,把全部请求头信息都获取进来
                                     @RequestHeader Map<String,String> header,
                      //@RequestParam,获取请求参数,获取请求中age的值
                                     @RequestParam("age") Integer age,
                                     @RequestParam("inters") List<String> inters,
                                     @RequestParam Map<String,String> params){
//                      //@CookieValue,拿到Cookie的值 ,除了这些参数,我们还有很多参数可以使用,这里就不说了
//                                     @CookieValue("_ga") String _ga,  这里我们拿不到cookie,因为浏览器没有存,会报错,所有注释了
//                      //上面只是拿到了_ga的值,我想要拿到_ga的全部cookie信息,拿到一个cookie对象
//                                     @CookieValue("_ga") Cookie cookie){

        Map<String,Object> map = new HashMap<>();

//        map.put("id",id);//"id":2
//        map.put("name",name);//"name":zhangsan
//        map.put("pv",pv);//"pv":{"id":"2","username":"zhangsan"}
//        map.put("userAgent",userAgent);//"userAgent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) 。。。
//        map.put("headers",header);//一大堆信息。。。
        map.put("age",age);//"age":18
        map.put("inters",inters);//"inters":["basketball","game"]
        map.put("params",params);//"params":{"age":"18","inters":"basketball"}
//        map.put("_ga",_ga);
//        System.out.println(cookie.getName()+"===>"+cookie.getValue());
        return map;
    }


    @PostMapping("/save")
    //@RequestBody:获取请求体里的信息,只有post请求才可以拿到,把里面的k、v都拿到    post和get请求的区别是?
    public Map postMethod(@RequestBody String content){
        Map<String,Object> map = new HashMap<>();
        map.put("content",content);
        return map;   //{"content":"userName=zzw&email=1074753901%40qq.com"}
    }


    //1、语法: 请求路径:/cars/sell;low=34;brand=byd,audi,yd
    //2、SpringBoot默认是禁用了矩阵变量的功能
    // 需要手动开启:原理:查看对于路径的处理--》UrlPathHelper进行解析--》
    // removeSemicolonContent(移除分号内容,这个属性是开启的,防止url注入)我们需要定制springmvc关闭它才可以支持矩阵变量的
    //3、矩阵变量必须有url路径变量才能被解析
    @GetMapping("/cars/{path}")
                //@MatrixVariable,获取矩阵变量的值   @PathVariable拿到路径
    public Map carsSell(@MatrixVariable("low") Integer low,
                        @MatrixVariable("brand") List<String> brand,
                        @PathVariable("path") String path){
        Map<String,Object> map = new HashMap<>();

        map.put("low",low);
        map.put("brand",brand);
        map.put("path",path);
        return map;  //{"path":"sell","low":34,"brand":["byd","audi","yd"]}
    }

    // /boss/1;age=20/2;age=10
    @GetMapping("/boss/{bossId}/{empId}")
    public Map boss(@MatrixVariable(value = "age",pathVar = "bossId") Integer bossAge,
                    @MatrixVariable(value = "age",pathVar = "empId") Integer empAge){
        Map<String,Object> map = new HashMap<>();

        map.put("bossAge",bossAge);
        map.put("empAge",empAge);
        return map;//{"bossAge":20,"empAge":10}

    }

}

你可能感兴趣的:(SpringBoot,restful,spring,boot,java)