springboot2.0入门(三)----定义编程风格+jackjson使用+postMan测试
一、RESTFul风格API
1、优点:
- )看Url就知道要什么资源
- )看http method就知道针对资源干什么
- )看http status code就知道结果如何
HTTP方法体现对资源的操作:
GET : 获取资源
POST : 添加资源
PUT : 修改资源
DELETE : 删除资源
二、代码演示:
/**
* @author Levi
* @date 2019/9/18 9:31
*/ @Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Animal {
private String name;
private Integer type;
private String num;
private Long id;
private Date birthDate;
}
新建Animal类,使用注解,包含设置get/set方法、全部参数构造器、无参数构造器、builder快速创建对象
/**
* @author Levi
* @date 2019/9/18 9:36
*/
@Slf4j
@RestController
@RequestMapping("/rest")
public class AnimalController { @RequestMapping(value = "/animals", method = POST, produces = "application/json")
public AjaxResponse saveArticle(@RequestBody Animal animal) { log.info("saveArticle:{}",animal);
return AjaxResponse.success(animal);
} @RequestMapping(value = "/animals/{id}", method = DELETE, produces = "application/json")
public AjaxResponse deleteArticle(@PathVariable Long id) { log.info("deleteAnimals:{}",id);
return AjaxResponse.success(id);
} @RequestMapping(value = "/animals/{id}", method = PUT, produces = "application/json")
public AjaxResponse updateArticle(@PathVariable Long id, @RequestBody Animal animal) {
animal.setId(id); log.info("updateArticle:{}",animal);
return AjaxResponse.success(animal);
} @RequestMapping(value = "/animals/{id}", method = GET, produces = "application/json")
public AjaxResponse getArticle(@PathVariable Long id) { Animal animal = Animal.builder().id(1L).name("levi").build();
return AjaxResponse.success(animal);
} }
新建 AnimalController,用postMan做测试:
新建一个post请求(添加),返回创建的对象;
@RestController = @Controller + @ResponseBody
@Slf4j
@Controller
@RequestMapping("/rest")
public class AnimalController { @RequestMapping(value = "/animals", method = POST, produces = "application/json")
public @ResponseBody AjaxResponse saveArticle(@RequestBody Animal animal) { log.info("saveArticle:{}",animal);
return AjaxResponse.success(animal);
}
上述注解可以改为上面的代码所示
@PathVariable 参数说明
delete请求例子
三、json配置:
springboot默认json工具为:jackjson
各种json工具性能对比:https://blog.csdn.net/accountwcx/article/details/50252657
@JsonIgnore 排除属性不做序列化与反序列化
@JsonProperty 为属性换一个名
@JsonPropertyOrder(value={"pname1","pname2"}) 改变json子属性的默认定义的顺序
@JsonInclude(JsonInclude.Include.NON_NULL) 排除为空的元素不做序列化反序列化
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 指定属性格式
全局时间配,在yml文件中配置,避免在请求时间的时候,格式不一致报错,
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
实际代码演示:
无法识别时间格式:
yml中添加配置,重启项目(一般修改配置文件需要重启项目,否则热部署一般是可以使用的)
没中间的T报错,有就不报错(无解)
这样不报错
@JsonIgnore 排除属性不做序列化与反序列化
@JsonProperty 为属性换一个名
@JsonPropertyOrder(value={"pname1","pname2"}) 改变json子属性的默认定义的顺序
@JsonInclude(JsonInclude.Include.NON_NULL) 排除为空的元素不做序列化反序列化
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 指定属性格式
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@JsonPropertyOrder(value={"id","type"})//更换变量显示顺序
public class Animal {
@JsonIgnore //不支持序列化,不能传参
private String name;
@JsonProperty("type1")
private Integer type;
//空值不返回
@JsonInclude(JsonInclude.Include.NON_NULL)
private String num;
private Long id;
private Date birthDate;
List<Animal> animalList;
private Animal animal2;
}
java实体类:
请求参数
返回值
本节到此结束!!!
springboot2.0入门(三)----定义编程风格+jackjson使用+postMan测试的更多相关文章
- Springboot2.0入门介绍
Springboot目前已经得到了很广泛的应用,why这么牛逼? Springboot让你更容易上手,简单快捷的构建Spring的应用 Spring Boot让我们的Spring应用变的更轻量化.比如 ...
- springboot2.0入门(一)----springboot 简介
一.springboot解决了什么? 避免了繁杂的xml配置,框架自动帮我们完成了相关的配置,当我们需要进行相关插件集成的时候,只需要将相关的starter通过相关的maven依赖引进,并可以进行相关 ...
- Ant快速入门(三)-----定义生成文件
适应Ant的关键就是编写生成文件,生成文件定义了该项目的各个生成任务(以target来表示,每个target表示一个生成任务),并定义生成任务之间的依赖关系. Ant生成文件的默认名为build.xm ...
- springboot2.0入门(九)-- springboot使用mybatis-generator自动代码生成
一.配置文件引入 插件引入,引入 <plugin> <groupId>org.mybatis.generator</groupId> <artifactId& ...
- springboot2.0入门(八)-- profile启动文件配置
一.不同环境使用不同配置文件 将application.yml文件拷贝三份,在文件末尾分别对应开发/生产/测试,dev/prod/test/文件夹,其中application.yml 中默认激活开发环 ...
- springboot2.0入门(七)-- 自定义配置文件+xml配置文件引入
一.加载自定义配置文件: 1.新建一个family.yam文件,将上application.yml对象复制进入family family: family-name: dad: name: levi a ...
- springboot2.0入门(五)--swagger2接口API构建
一.特点 代码变,文档变.只需要少量的注解,Swagger 就可以根据代码自动生成 API 文档,很好的保证了文档的时效性. 跨语言性,支持 40 多种语言. Swagger UI 呈现出来的是一份可 ...
- springboot2.0入门(二)-- 基础项目构建+插件的使用
一.idea中新建第一个HelloWorld项目 点击next: 下一步 在这里可以选择我们需要依赖的第三方软件类库,包括spring-boot-web,mysql驱动,mybatis等.我们这里暂时 ...
- springboot2.0入门(四)----mock模拟测试+单元测试
一.本节主要记录模拟测试.单元测试: 二.mock 测试 1.1什么是Mock? 在面向对象程序设计中,模拟对象(英语:mock object,也译作模仿对象)是以可控的方式模拟真实对象行为的假的对象 ...
随机推荐
- 【Python】【demo实验33】【练习实例】【列表的反转】
反转列表 我的源代码: #!/usr/bin/python # encoding=utf-8 # -*- coding: UTF-8 -*- #按照相反的顺序输出列表的各元素 l = ["t ...
- Httpwatch教程
启动Httpwatch 从IE的“查看”—“浏览器栏”—“HttpWatch”启动HttpWatch.如下图所示: 以下是HttpWatch程序界面 以下用登录我的邮箱mail.163.com例子来展 ...
- 【AtCoder】Mujin Programming Challenge 2017
Mujin Programming Challenge 2017 A - Robot Racing 如果每个数都是一个一个间隔开的,那么答案是\(n!\) 考虑把一个数挪到1,第二个数挪到3,以此类推 ...
- Ansible 自动化工具入门
Ansible 配置 Ansible 简单管理 下面的小实验,我们将采用以下的IP地址规划,请自行配置好. [实验环境] [状态] [主机列表] [python版本] 控制机 192.168.1.10 ...
- MyBatis Java不同方式加载文件时的路径格式问题、Mybatis中加载.properties文件
public class LoadPropTest { public static void main(String[] args) throws IOException { //一.Properti ...
- Linux:PS查看进程信息,和查看tomcat内存等信息
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/fly910905/article/deta ...
- ASP.NET-A low-level Look at the ASP.NE
请求处理模型1: ******** 1.浏览器向服务器发送请求,先到达服务器的http.sys系统文件,进行初步的处理. (服务器分为内核模式和用户模式,http.sys在内核模式种,IIS在用户模式 ...
- 5. Java的注释,标识符、标识符的命名规范
什么是标识符符? 凡是可以由自己命名的地方都称为修饰符. 例: 项目名 ,包名 ,类名 .方法名 2. 命名规范. ① 不可使用java关键字和保留字,但是可以包含关键字和保留字. ② ...
- 关于SpringMVC映射模型视图的几点小事
一.SpringMVC概述 SpringMVC为展现层提供的基于MVC设计理念的优秀的Web框架,是目前最主流的MVC框架之一. SpringMVC通过一套MVC注解,让POJO成为处理请求的控制器, ...
- Web框架概述——React.js
目前,在前端Web开发中,三大热门框架为React.js,Vue.js,Angular.js .当然,三大框架各有各的优缺点,这里就不多说了,下面我就针对前段时间所学的React框架做一下整体知识点的 ...