springboot2.0入门(三)

一、RESTFul风格API

  1、优点:   

  1. )看Url就知道要什么资源
  2. )看http method就知道针对资源干什么
  3. )看http status code就知道结果如何

HTTP方法体现对资源的操作:

  GET : 获取资源
  POST : 添加资源
  PUT : 修改资源
  DELETE : 删除资源

二、代码演示:

1/** 2 * @author Levi 3 * @date 2019/9/18 9:31 4 */ 5 6@Data 7@AllArgsConstructor 8@NoArgsConstructor 9@Builder 10public class Animal { 11 private String name; 12 private Integer type; 13 private String num; 14 private Long id; 15 private Date birthDate; 16}

新建Animal类,使用注解,包含设置get/set方法、全部参数构造器、无参数构造器、builder快速创建对象

1/** 2 * @author Levi 3 * @date 2019/9/18 9:36 4 */ 5@Slf4j 6@RestController 7@RequestMapping("/rest") 8public class AnimalController { 9 10 11 @RequestMapping(value = "/animals", method = POST, produces = "application/json") 12 public AjaxResponse saveArticle(@RequestBody Animal animal) { 13 14 log.info("saveArticle:{}",animal); 15 return AjaxResponse.success(animal); 16 } 17 18 @RequestMapping(value = "/animals/{id}", method = DELETE, produces = "application/json") 19 public AjaxResponse deleteArticle(@PathVariable Long id) { 20 21 log.info("deleteAnimals:{}",id); 22 return AjaxResponse.success(id); 23 } 24 25 26 @RequestMapping(value = "/animals/{id}", method = PUT, produces = "application/json") 27 public AjaxResponse updateArticle(@PathVariable Long id, @RequestBody Animal animal) { 28 animal.setId(id); 29 30 log.info("updateArticle:{}",animal); 31 return AjaxResponse.success(animal); 32 } 33 34 @RequestMapping(value = "/animals/{id}", method = GET, produces = "application/json") 35 public AjaxResponse getArticle(@PathVariable Long id) { 36 37 Animal animal = Animal.builder().id(1L).name("levi").build(); 38 return AjaxResponse.success(animal); 39 } 40 41}

新建 AnimalController,用postMan做测试:

 新建一个post请求(添加),返回创建的对象;

1@RestController = @Controller + @ResponseBody 2 3@Slf4j 4@Controller 5@RequestMapping("/rest") 6public class AnimalController { 7 8 9 @RequestMapping(value = "/animals", method = POST, produces = "application/json") 10 public @ResponseBody AjaxResponse saveArticle(@RequestBody Animal animal) { 11 12 log.info("saveArticle:{}",animal); 13 return AjaxResponse.success(animal); 14 }

上述注解可以改为上面的代码所示

@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文件中配置,避免在请求时间的时候,格式不一致报错,

1spring: 2 jackson: 3 date-format: yyyy-MM-dd HH:mm:ss 4 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") 指定属性格式

1@Data 2@AllArgsConstructor 3@NoArgsConstructor 4@Builder 5@JsonPropertyOrder(value={"id","type"})//更换变量显示顺序 6public class Animal { 7 @JsonIgnore //不支持序列化,不能传参 8 private String name; 9 @JsonProperty("type1") 10 private Integer type; 11 //空值不返回 12 @JsonInclude(JsonInclude.Include.NON_NULL) 13 private String num; 14 private Long id; 15 private Date birthDate; 16 List<Animal> animalList; 17 private Animal animal2; 18}

java实体类:

 请求参数

 

 返回值

本节到此结束!!!

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang

前端性能优化 - 雅虎军规

无论是在工作中,还是在面试中,web前端性能的优化都是很重要的,那么我们进行优化需要从哪些方面入手呢?可以遵循雅虎的前端优化35条军规,这样对于优化有一个比较清晰的方向.35条军规1.尽量减少HTTP请求个数——须权衡2.使用CDN(内容分发网络)3.为文件头指定Expires或CacheControl,使内容具有缓存性。4.避免空的