首页 > 其他分享 >RestFul风格的开发

RestFul风格的开发

时间:2024-03-27 21:56:49浏览次数:20  
标签:http users id 开发 风格 RestFul public localhost name

1、REST风格

根据REST风格对资源进行访问称为restful

描述模块通常使用复数表示某类资源

每个控制器方法前都有这两个注解:@RequestMapping(value = "/users/{id}/{name}",method = RequestMethod.DELETE)@ResponseBody;重复性太高

解决:

  1. 将@RequestMapping放在类上,定义所有方法共同的访问路径
  2. 使用@GetMapping @PostMapping @PutMapping @DeleteMapping代替
  3. 将ResponseBody提到类上面,让所有的方法都有@ResponseBody的功能;使用@RestController注解替换@Controller+@ResponseBody

例子:

  • http://localhost/users 查询全部用户信息 GET(查询)
  • http://localhost/users/1 查询指定用户信息 GET(查询)
  • http://localhost/users 添加用户信息 POST(新增/保存)
  • http://localhost/users 修改用户信息 PUT(修改/更新)
  • http://localhost/users/1 删除用户信息 DELETE(删除)
@RestController
public class UserController {
    @GetMapping(""/users/{id}/{name}"")
    public String getInfo(@PathVariable("id") Integer id,@PathVariable("name") String name) {
        return "{'module':'user delete',json}";
    }
}

2、一般风格

当前端的请求地址有参数时:http://localhost/users/1/lm

@Controller
public class UserController {
    @RequestMapping(value = "/save",method = RequestMethod.POST)
    @ResponseBody
    public String save(@RequestBody User user) {
        System.out.println("user save..."+user);
        return "{'module':'user save'}";
    }
    
	@RequestMapping(value = "/users/{id}/{name}",method = RequestMethod.DELETE)
    @ResponseBody
    public String delete(@PathVariable("id") Integer id,@PathVariable("name") String name) {
        System.out.println("user delete "+id+":"+name);
        return "{'module':'user delete',json}";
    }
}

3、注解说明

@RestController
  1. 基于SpringMVC的RESTful开发控制器类定义上方
  2. @Controller+@ResponseBody
@GetMapping @PostMapping @PutMapping @DeleteMapping
  1. 基于SpringMVC的RESTful开发控制器方法定义上方,设置当前控制器方法请求的访问路径与请求动作
  2. value(默认):请求访问路径
@PathVariable
  1. SpringMVC控制器方法的形参前面
  2. 绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应

4、依赖说明

jackson-databind
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.0</version>
</dependency>
  1. Jackson JSON处理库的一部分,用于在Java中处理JSON数据的工具包。
  2. 它提供一组类和方法,用于将Java对象转换为JSON格式,以及将JSON格式转换回Java对象;使用这个包,可以很方便地在Java应用程序中处理JSON数据,包括序列化和反序列化对象、处理JSON数据流等操作。

5、访问静态资源

pages\books.html

浏览器输入http://localhost/pages/books.html

SpringMVC拦截静态资源,SpringMVC根据地址去controller找对应的方法,找不到报404

解决:

  1. 对静态资源的访问,不要过springmvc,交给tomcat处理:配置SpringMVC,将静态资源进行放行
  2. 要使配置类生效需要修改配置类的扫描路径
 protected String[] getServletMappings() {
        return new String[]{"/"};    //http://localhost/pages/books.html满足这个规则
}
@Configuration   //设置静态资源访问过滤,当前类需要设置为配置类,并被扫描加载
public class SpringMvcSupport extends WebMvcConfigurationSupport {
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        //当访问/pages/????时候,从/pages目录下查找内容
        registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");
        registry.addResourceHandler("/js/**").addResourceLocations("/js/");
        registry.addResourceHandler("/css/**").addResourceLocations("/css/");
        registry.addResourceHandler("/plugins/**").addResourceLocations("/plugins/");
    }
}
@Configuration
@ComponentScan({"com.itheima.controller","com.itheima.config"})
@EnableWebMvc
public class SpringMvcConfig {
}
@Configuration
@ComponentScan("com.itheima")
@EnableWebMvc
public class SpringMvcConfig {
}

标签:http,users,id,开发,风格,RestFul,public,localhost,name
From: https://www.cnblogs.com/lm02/p/18100350

相关文章

  • 测试优先的开发
    测试优先的思想确定规约Specification编写测试用例JUnit编写代码Coding程序测试Testing(如果需要的话)修改代码并重新测试,直到通过全部测试用例为止Revisingandtestingagain设计测试用例等价类划分概述:将被测函数的输入域划分为等价类,从等价类中导出测试用例。假......
  • 鸿蒙开发 TypeScript 基础语法
    文章的最下面有官网链接可以进行练习!变量声明TypeScript在JavaScript的基础上加入了静态类型检查功能,因此每一个变量都有固定的数据类型let:声明变量的关键字,const则代表常量示例代码://string:字符串,可以用单引号或双引号letmsg:string='helloworld'//number:数......
  • 大数据开发之CDH使用搭建大数据平台
    大数据开发之CDH使用搭建大数据平台1、CDH介绍它是Cloudera公司提供的一种大数据平台解决方案。CDH的全称是Cloudera’sDistributionincludingApacheHadoop,它是一个开放源代码的大数据平台,基于ApacheHadoop和其他相关的开源技术构建,包括HDFS、MapReduce、HBase、ZooKee......
  • 个人简历 - java开发版本 (24应届毕业生 - 找工作!)
    老板们觉得合适的请联系一下哦~感恩!求职目标: java开发工程师基本信息:姓名: 付盟                                           性别: 男生日: 2001年12月13日                  年龄:22岁邮箱:181202......
  • 移动应用开发工具及其影响
     摘要随着智能手机的普及和移动互联网的快速发展,手机应用程序成为用户日常生活中不可或缺的一部分。本文将介绍六种常用的手机应用开发工具,包括AppMobi、APICloud、appuploder、MoSync、ipaguard和Bedrock,探讨它们在移动应用开发中的作用和优势。 引言随着移动互联网行业......
  • 集群聊天服务器与客户端开发
    服务器服务技术特点如何使用依赖库客户端服务器服务器代码在https://gitee.com/ericling666/sponge,对应的客户端源代码在https://gitee.com/ericling666/spongeclient。对本项目的演示,请看视频【集群聊天服务器与仿微信客户端开发,服务器基于muduo,mysql,redis,客户端基......
  • Java开发千万别错过的好课程:Java版数据结构和算法+AI算法课程13
    AI人工智能时代,Java从业者必学科目精品课程推荐:Java版数据结构和算法+AI算法课程【点击开始学习】工作机会推荐和资源分享群:819391432学习地址:https://class.imooc.com/sale/fullstackalgo在当今数字时代,数据已成为驱动创新和决策的关键资源。为了在这个竞争激烈的世界......
  • 拌合楼管理软件开发(十一) 海康威视车牌识别摄像头安装调试,总算是跑通了。
    前言:总算是调测通了    话接上回,车牌识别摄像头买回来了,卡在电源上了,今天抽时间把电源问题解决了,开始代码正式的调测。一切还算顺利了,没有再碰到打脸的事情了。一、电源接线:    如同前面预想的,把买回来的电源尾线按照颜色相接,用电工胶布给裹起来,防止漏电。......
  • Android开发-Android APP实操-1.项目创建及启动页面UI编码
    一、项目创建及模拟器安装1.选择新建一个project2. 选择空模板3.完成新project的设置 下载完成后点击Finish4.下载安卓模拟器 选择Pixel7点击下载R 为虚拟机命名,选择竖屏,点击Finish.5.点击启动,测试运行 运行成功! 二、启动页面UI编码 1.打开Main......
  • 聊聊微信小程序的隐私协议开发
    为什么需要隐私协议?小程序隐私授权弹窗FAQ官方:https://developers.weixin.qq.com/community/develop/doc/00000ebac5c3e0423840776a966c09 也就是说只要我们配置了隐私协议,那么涉及到拍照啊、上传、下载图片啊这些接口都不需要授权了,只要用户同意就能直接调用相关接口。如......