markdown 印象笔记语法练习带快捷键的

加粗 快捷键 cmd+b

斜体 cmd+i

分割线 cmd+u


编号列表: cmd+shift+o

无编号列表 cmd+shift+u

待办事项 cmd+shift+T

代码块 cmd+shift+P

  1. 编号列表项目1
  2. 编号项目列表2
  • 无编号列表项目1;

  • 无编号列表项目2;

  • [ ] 待办事项1

  • [ ] 待办事项2

System.out.println("hello world");

背景

rest是一种http协议的风格,在互联网时代这种风格在微服务中流行起来了,客户端对微服务,微服务之间交互;

一个URL代表一个资源,里面都是名词;

REST介绍

REST 全称 Representational state Transfer 表现层状态转换;是一种软件架构原则;

  1. 资源:具体存在的对象比如用户,角色,菜单,文本,图片,歌曲;用URI来描述;
  2. 表现层:如何表示资源,现在最流行的是json;
  3. 状态转换;资源并不是一成不变的是一个变化的过程,可以经历create,visit,update,delete;

HTTP的动作

请求方法 动作
GET 查询
POST 新增
PUT 修改全部
PATCH 修改部分
DELETE 删除
  1. URL中不应该出现动词
  2. 版本号放在URL中,应该移动到Header中
  3. 如果参数不多,应该放在path中,而不是通过getParam的方法传递,参数超过4个,应该把参数放到请求体,通过json传递;

SpringMVC对REST风格的支持

@RequestMapping是通用的url配置注解,为了支持rest,springboot引入了更多的注解;

注解 方法 说明
@GetMapping GET 查询
@PostMapping POST 新增
@PutMapping PUT 修改全部
@PatchMapping PATCH 修改部分
@DeleteMapping DELETE 删除

以上注解的方法中可以配置consumers,produces,即接受什么类型的资源请求,输出什么格式的资源;

  1. url上的path参数通过注解@PathVariable配置;
  2. 请求体的参数通过@RequestBody配置;
  3. 返回json数据,在方法申明位置配置@ResponseBody,或者在控制器上配置@RestController;如果需要返回其它格式的数据到客户端,通过协商资源视图解析器来配置;

渲染结果

springmvc返回结果的流程有两种:

  1. @ResponseBody注解标识的控制器方法,无需视图解析器,使用MappingJackson2HttpMessageConverter转换输出;
  2. 使用ModelAndView,需要配置视图解析器;

springMVC容器启动的时候,默认注册了两个HttpMessageConverter,即:

1.StringHttpMessageConverter; 按照字符串输出;(produces=Text_plan_value)

2.MappingJackson2HttpMessageConverter;按照json字符串输出;(produces=xxxjson)

如果按照请求类型,找不到对应的HttpMessageConverter,则会流转到 ContentNegotiatingViewResolver,对结果进行解析;

springmvc内置了如下的视图解析器:

  1. BeanNameViewResolver;
  2. ViewResolverComposite
  3. InteernalResourceViewResolver;

@ResponseStatus注解标注在控制器方法上,可以设置响应状态码;

ResponseEntity对象也可以设置响应状态码和响应头信息;

统一异常处理

可以在@ExceptionHandler标注的异常处理方法上,标注@ResponseStatus,统一设置异常返回的响应状态码;

RestTemplate

为了完成微服务系统之间的REST调用,springMvC提供了 RestTemplate,它的底层是使用HttpURLConnection实现的;

 public static void testGet(){
RestTemplate restTemplate = new RestTemplate(); String url = "https://xxx.yyy.com/tiananuser_service/testNewUser/new/{plat}/{start}/{end}?requestId=x";
Map<String, Object> params = new HashMap<>(3);
params.put("plat",0);
params.put("start","2019-12-20");
params.put("end","2020-01-06"); final ResponseEntity<Object> responseEntity = restTemplate.getForEntity(url, Object.class, params); System.out.println("responseEntity.getStatusCodeValue() : "+ responseEntity.getStatusCodeValue());
System.out.println("responseEntity.getBody() : "+ responseEntity.getBody()); }

小结

  • 简单的介绍了REST ,即表现层状态转移,是一种架构原则;
  • 介绍了springMVC对REST的支持,提供了5个方法注解;
  • 简单介绍了使用REST访问的客户端RestTemplate ;

原创不易,转载请注明出处。

0106 springMVC REST风格的更多相关文章

  1. SpringMVC -rest风格修改删除

    REST风格

  2. SpringMVC REST 风格请求介绍及简单实践

    简介 REST 即 Representational State Transfer.(资源)表现层状态转化.是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以正得到越来越 ...

  3. SpringMVC REST 风格静态资源访问配置

    1 在web.xml中使用默认servlet处理静态资源,缺点是如果静态资源过多,则配置量会比较大,一旦有遗漏,则会造成资源无法正常显示或404错误. <!-- 静态资源访问控制 --> ...

  4. SpringMVC RESTful风格URL处理带点的参数

    使用了RESTful风格的URL.但是在处理带点的搜索参数,比如baidu.com的时候,后台就取不到正确的参数了. 搜索了下原因,原来是SpringMVC将点号看作扩展分隔符号了,因此后台没法拿到正 ...

  5. springmvc REST风格的URL

    1:需要配置一个filter <!-- 配置 org.springframework.web.filter.HiddenHttpMethodFilter: 可以把 POST 请求转为 DELET ...

  6. SpringMVC传统风格控制器和基于注解的控制器

    SpringMVC的DispatcherServlet 之前说过springMVC是使用Servlet作为控制器,就是这个用于调度的DispatcherServlet了.这个是servlet,可以根据 ...

  7. springmvc restful风格操作

    ssm框架 controller: package com.sgcc.controller; import java.util.ArrayList; import java.util.List; im ...

  8. SpringMVC restful风格

    1.Spring对REST的支持 Spring3(这里讨论Spring3.2+)对Spring MVC的一些增强功能为REST提供了良好的支持.Spring对开发REST资源提供以下支持: 操作方式: ...

  9. SpringMVC restful风格下载文件,文件后缀被截掉

    原文:https://blog.csdn.net/wisdomhealth/article/details/78400421 @RequestMapping("/file/{filename ...

随机推荐

  1. elk单机安装部署

    es 下载地址:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.0-linux-x86_64.t ...

  2. 关于html的基本知识

    先上基本介绍图 HTML 简介 超文本标记语言 Hyper Text Markup Language 什么是标签(大多数标签) 尖括号包围.成对出现 开始标签,结束标签 元素 编辑器 HBuilder ...

  3. FiBiNET-学习

    Our main contributions are listed as follows: • Inspired by the success of SENET in the computer vis ...

  4. mysql 命令行个性化设置

    通过配置显示主机和用户名 mysql -u root -p --prompt="(\u@\h) [\d]>" 或在配置文件中修改,可在命令行中的目标位置查看 --tee na ...

  5. Entity Framework Migrations 数据迁移

    在使用Entity Framework 过程中,经常会遇到需要变更model 的状况,此时可以使用Migrations ,将每次变更记录以便后续更换机器或是运行在生产环境,持久层可保持一致. 在Pac ...

  6. Centos7 之 MariaDB(Mysql) root密码忘记的解决办法

    MariaDB(Mysql) root密码忘记的解决办法 1.首先先关闭mariadb数据库的服务 # 关闭mariadb服务命令(mysql的话命令就是将mariadb换成mysql) [root@ ...

  7. Interlocked.Increment()函数详解 (转载)

    原文地址 class Program { static object lockObj = new object(); ; ; //假设要处理的数据源 , ).ToList(); static void ...

  8. USACO January Contest Gold Time is Mooney 题解

    题意 给出一个有向图,走到每个节点有 \(m_i\) 的收益,每一条边要走一天,走 \(T\) 天的花费是 \(C\cdot T^2\),求从节点 \(1\) 开始并且在节点 \(1\) 结束的旅行的 ...

  9. 吴裕雄--天生自然MySQL学习笔记:MySQL 安装

    所有平台的 MySQL 下载地址为: MySQL 下载:https://dev.mysql.com/downloads/mysql/ 注意:安装过程我们需要通过开启管理员权限来安装,否则会由于权限不足 ...

  10. layer弹出框包含页面

    参考:http://www.cnblogs.com/zhengchenhui/p/6038865.html