• SpringMvc(三、REST风格快速入门


    一、REST风格简介

    REST(Representation State Transfer) ,表现形态切换

    传统风格URL:http://localhost/user/getById?id=1

                             http://localhost/user/saveUser

    REST风格:http://localhost/user/user/1

                             http://localhost/user

    优点: 书写简单,同时隐藏资源的访问行为,用户不发通过地址栏得知对资源进行了何种操作

    我们可以根据REST风格访问资源时使用的行为动作区分对资源进行何种操作

    • http://localhost/users                                        查询全部用户信息        GET        (查询) 
    • http://localhost/users/1                                     查询指定用户信息        GET        (查询)
    • http://localhost/users                                        添加用户信息               POST      (添加)
    • http://localhost/users                                        修改用户信息               PUT        (修改)
    • http://localhost/users/1                                     删除用户信息               DELETE (删除)

    REST风格对资源进行访问成为RESTful 

    上述行为只是约定方式,约定不是规范,可以打破,所以我们称REST风格,而不是REST规范

    二、RESTful快速开发 

    @PathVariable

    映射 URL 绑定的占位符
    通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过

    若方法参数名称和需要绑定的url中变量名称不一致时,写成:

    @RequestMapping("/getUserById/{name}")
        public User getUser(@PathVariable("name") String userName){
            return userService.selectUser(userName);
        }

    @RestController

    相当于@Controoler和@ResponseBody的整合

    1,@PostMapping

    等同于:@RequestMapping(value = “/save”, method = RequestMethod.POST)'

    接收新增请求

    1. @PostMapping
    2. public String save(@RequestBody User user){
    3. System.out.println("save Test...."+user);
    4. return "{'model':'save test'}";
    5. }

    2,@GetMapping

    等同于:@RequestMapping(value = “/save”, method = RequestMethod.GET)

    接收查询请求

    1. @GetMapping("/{id}")
    2. public String getById(@PathVariable String id){
    3. System.out.println("getById Test...."+id);
    4. return "{'model':geyById test}";
    5. }
    6. @GetMapping()
    7. public String getAll(){
    8. System.out.println("getAll Test....");
    9. return "{'model':getAll test}";
    10. }

    3,@DeleteMapping

    等同于:@RequestMapping(value = “/save”, method = RequestMethod.DELETE)

    接收删除请求

    1. @DeleteMapping("/{id}")
    2. public String delete(@PathVariable String id){
    3. System.out.println("delete Test...."+id);
    4. return "{'model':delete test}";
    5. }

    3,@PutMapping

    等同于:@RequestMapping(value = “/save”, method = RequestMethod.PUT)

    接收修改请求

    1. @PutMapping
    2. public String update(@RequestBody User user){
    3. System.out.println("update Test...."+user);
    4. return "{'model':update test}";
    5. }

    三、 静态资源过滤问题

    新建SpringMvcSupport配置类

    1. package config;
    2. import org.springframework.context.annotation.Configuration;
    3. import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    4. import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
    5. public class SpringMvcSupport extends WebMvcConfigurationSupport {
    6. @Override
    7. protected void addResourceHandlers(ResourceHandlerRegistry registry) {
    8. registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");
    9. registry.addResourceHandler("/js/**").addResourceLocations("/js/");
    10. registry.addResourceHandler("/css/**").addResourceLocations("/css/");
    11. registry.addResourceHandler("/plugins/**").addResourceLocations("/plugins/");
    12. }
    13. }

    在SpringMvc总配置类import上述类

    @Import(SpringMvcSupport.class)

                

  • 相关阅读:
    LIO-SAM源码解析(四):imuPreintegration.cpp
    Docker容器的5个实用案例
    【python爬虫】批量识别pdf中的英文,自动翻译成中文下
    图--专升本
    vue2+echarts:使用后台传输的json数据去动态渲染echarts图表
    vite + vue3 + ts配置《企业级项目》二次封装el-table、分页
    神经网络控制系统的应用,神经网络的输入输出
    【mia】wa:webrtcagent组件
    【opencv】传统图像识别:hog+svm实现图像识别详解
    电脑同时连接有线和无线网络怎么设置网络的优先级
  • 原文地址:https://blog.csdn.net/weixin_48841931/article/details/126651989