springboot2.0入门(三)----定义编程风格

一、RESTFul风格API

  1、优点:  

  1. )看Url就知道要什么资源
  2. )看http method就知道针对资源干什么
  3. )看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

原文地址:https://www.cnblogs.com/liweiweicode/p/11622313.html

时间: 2024-10-29 07:37:19

springboot2.0入门(三)----定义编程风格的相关文章

springboot2.0入门(一)----springboot 简介

一.springboot解决了什么? 避免了繁杂的xml配置,框架自动帮我们完成了相关的配置,当我们需要进行相关插件集成的时候,只需要将相关的starter通过相关的maven依赖引进,并可以进行相关的插件整合开发, 当然,springboot简化了开发的流程,当我们需要插件的其他版本也可以使用自己的配置,但是需要对spring以及相关框架很熟悉,所以,高楼平地起,基础的框架和插件也是需要我们深入学习的: 总的来说 :springboot使配置.部署.监控.开发都变得相对简单. 二.spring

springboot2.0入门(五)--swagger2接口API构建

一.特点 代码变,文档变.只需要少量的注解,Swagger 就可以根据代码自动生成 API 文档,很好的保证了文档的时效性. 跨语言性,支持 40 多种语言. Swagger UI 呈现出来的是一份可交互式的 API 文档,我们可以直接在文档页面尝试 API 的调用,省去了准备复杂的调用参数的过程. 还可以将文档规范导入相关的工具(例如 SoapUI), 这些工具将会为我们自动地创建自动化测试 二.代码 <dependency> <groupId>io.springfox</

springboot2.0入门(七)-- 自定义配置文件+xml配置文件引入

一.加载自定义配置文件: 1.新建一个family.yam文件,将上application.yml对象复制进入family family: family-name: dad: name: levi age: 30 #${random.int} 随机数的值是不能传递的 mom: alias: - yilisha - alise age: ${family.dad.age} #妈妈的年龄和爸爸相同,没有则默认为24岁 child: name: happlyboy age: 5 friends: -

springboot2.0入门(八)-- profile启动文件配置

一.不同环境使用不同配置文件 复制多份配置文件,修改不同的端口,在application.yml文件中添加具体启动的配置文件,可以看到不同的启动端口,使用maven的打包命令,将项目打入jar包: <!-- 跳打包test文件报错--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId>

springboot2.0入门(九)-- springboot使用mybatis-generator自动代码生成

一.配置文件引入 插件引入,引入 <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <configurationFile>${basedir}/src/mai

springboot2.0入门(四)----mock模拟测试+单元测试

一.本节主要记录模拟测试.单元测试: 二.mock 测试 1.1什么是Mock? 在面向对象程序设计中,模拟对象(英语:mock object,也译作模仿对象)是以可控的方式模拟真实对象行为的假的对象.比如:对象B依赖于对象A,但是A代码还没写是一个空类空方法不能用,我们来mock一个假的A来完成测试. /** * @author Levi * @date 2019/10/4 21:09 */ //@Transactional @Slf4j @SpringBootTest public clas

SpringBoot2.0之二 新建RESTfull风格项目

1.新建一个Maven项目(具体方法可以参照 SpringBoot之一) 2.先建一个User类 package com.somta.springboot.pojo; public class User { private String id; private String name;//姓名 private Integer age;//年龄 //setter和getter方法省略 } 3.新建一个UserController类,编写一些restfull的接口 @RestController p

springboot学习入门简易版三---springboot2.0启动方式

2.4使用@componentscan方式启动 2.4.1 @EnableAutoConfiguration 默认只扫描当前类 @EnableAutoConfiguration 默认只扫描当前类,如果再新建一个indexcontroller类,将无法被扫描. 新建indexcontroller类: /** * 测试index类 * @author admin * */ @RestController public class IndexController { @RequestMapping("

第三章 从阻塞顺序性编程风格到事件驱动型和异步编程风格

一 异步与阻塞,事件驱动与顺序执行 1.什么是异步,什么是事件驱动,异步有什么好处,有什么坏处 A君和B君今天都是计划去银行办点事,然后去超市买点日用品.他们都来到银行,A去自动提款机那里开始排队,前面大概有20来人,她只能依次排队等,取到钱后她再去超市.B去到排队机抽了个号码,他一看前面还有很多人,预计要比较长事件,然后去隔壁超市找要买的东西,听到银行广播自己号码时候,再回来银行办事. 对于A君,我们叫同步,程序只能按预定的顺序执行,遇到耗时长的操作时候,需要等待其完成才能执行下一步任务.对于