springboot学习笔记(3)URL路由和参数处理

springboot学习笔记(3)URL路由和参数处理,第1张

springboot学习笔记(3)URL路由和参数处理 URL路由

1.RESTful URL

典型的前后端分离的设计

GET http://localhost:8080/api/v1/books 获取读书清单列表(v1代表版本1)

POST http://localhost:8080/api/v1/books 新增一个清单

GET http://localhost:8080/api/v1/books/{id} 获取一条读书清单

PUT http://localhost:8080/api/v1/books 更新一个读书清单

DELETE http://localhost:8080/api/v1/books/{id} 删除一条读书清单

一个URL代表一种资源或者一种资源的状态转换。RESTful URL使得链接的设计简单,不会有过多的变形。

2.@RestController

用于标识类的属性,当一个类被它注释后,就代表这个类是一种web控制器,用来响应链接请求

且被@RestController注解的类,它的返回类型为json格式(除了简单类型)。

3.@RequestMapping

顾名思义,它一种请求映射的意思,它应用在类或者方法之上,让类或方法具有完成请求映射的功能,当浏览器发出请求后,根据映射关系找到相应的类/方法,执行其中内容。

ResquestMapping还有简写形式,可以直接写为PostMapping、GetMapping等。

它有两个重要的参数 value和method。

value的值决定链接的内容。类的值比方法的值在更深一层,如图,当类上注释了“api”后,链接必须更新为http://localhost:8080/api/say,才能访问到原页面。method决定这次请求的方式,如RequestMethod.GET、RequestMethodPOST、RequestMethod.DELETE。当不写时,默认接受所有请求。

4.@Controller

@Controller也可以响应web请求,但它只能解析return 的jsp,html页面,如果return “books”(即返回字符串类型),则会报错,需要再注释一个@ResponseBody。

它与@RestController区别在于,如果想要定义一些RESTful类型的api,json,可以用@RestController,当定义一些模板时,用@Controller。

参数处理

1.@PathVariable,专门用于获取URI

http://localhost:8080/api/v1/books/{id}  {id}就是一种定义参数的方式。

eg:http://localhost:8080/api/v1/books/12

我们需要在后端获取到id,才能组成sql语句去 *** 作数据库。

但只是这样会返回500错误,因为@GetMapping中的id与方法中的id无法对应起来,需要额外地添加注释@PathVariable,需要注意的是@PathVariable注释的数据名需要和@GetMapping中的保持一致。是id就同为id,不能一个是id另一个为bid。

再次在浏览器中输入https://localhost:8080/api/v1/books/12/admian,得到book中的内容。

 

2.@RequestParam

用于post等接受参数

当前端用户提交表单时,在后台我们通常用post方式来接收这些数据。

但前端表单的数据如何被一一对应接收,需要用到@RequestParam注释。

当前端给作者设置的变量名为“author”,在后端用@RequestParam String author可以一一对应。

当前端给作者设置的变量名为“au”,在后端用@RequestParam("au") String author可以一一对应。

 

 当查看页面时,URL可以写为http://localhost:8080/api/v1/books/{page}/{size} 但这种方式并不常用。

一般写法为:http://localhost:8080/api/v1/books?page=1&size=2

当URL为这种类型时,我们也用@RequestParam来接收参数。

@GetMapping("/books")
    public Object getAll(@RequestParam int page,@RequestParam int size){
        Map book=new HashMap<>();
        book.put("name","百年孤独");
        book.put("date","1999");
        book.put("author","马尔克斯");
        Map book2=new HashMap<>();
        book2.put("name","耻");
        book2.put("date","1111");
        book2.put("author","库切");
        List contents=new ArrayList<>();
        contents.add(book);
        contents.add(book2);

        Map pagemap =new HashMap<>();
        pagemap.put("page",page);
        pagemap.put("size",size);
        pagemap.put("content",contents);
        return pagemap;
    }

得到结果

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5708067.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存