开始一个最简单的RESTful API项目

最近在网易云课堂上看一些视频,给大家推荐一个讲Spring Boot的视频https://study.163.com/course/courseMain.htm?courseId=1005213034,老师讲的很不错。在学习的时候我也会做一些笔记,方便日后巩固。

什么是RESTful API?

REST是Representational State Transfer的缩写。它的特点是:

  • 所有的东西都是资源,所有操作都通过对资源的增删改查(CRUD)实现
  • 对资源的增删改查对应对URL的操作(POST, DELETE, PUT, GET)
  • 无状态的,所谓无状态即所有的资源都可以URI定位,而且这个定位与其他资源无关,也不会因为其他资源的变化而变化。

用一句话概括就是:URL定位资源,用HTTP动词(GET,POST,PUT,DELETE)描述操作。

  • Resource:资源,即数据
  • Representational:某种表现形式,比如用JSON,XML,JPEG等
  • State Transfer:状态变化。通过HTTP动词实现。

所以RESTful API就是REST风格的API。 那么在什么场景下使用RESTful API呢?在当今的互联网应用的前端展示媒介很丰富。有手机、有平板电脑还有PC以及其他的展示媒介。那么这些前端接收到的用户请求统一由一个后台来处理并返回给不同的前端肯定是最科学和最经济的方式,RESTful API就是一套协议来规范多种形式的前端和同一个后台的交互方式。

RESTful API由后台也就是SERVER来提供前端来调用。前端调用API向后台发起HTTP请求,后台响应请求将处理结果反馈给前端。也就是说RESTful 是典型的基于HTTP的协议。

URI命名

什么是Spring Boot?

Spring Boot 的目的是提供一组工具,以便快速构建容易配置的 Spring 应用程序,不用像Spring一样,写一个Hello World都要配置一大堆。Spring Boot是不需要配置XML的,且它自带了一个嵌入式的web服务器。引用Spring Boot官网的介绍:

“ Spring Boot 使您能轻松地创建独立的、生产级的、基于 Spring 且能直接运行的应用程序。我们对 Spring 平台和第三方库有自己的看法,所以您从一开始只会遇到极少的麻烦。”

最简单的Spring Boot项目

  1. 首先前往https://start.spring.io

    课时4.1

  2. 从IDEA中导入项目,导入时选中MAVEN的.pom文件,后面一路next就好


    IDEA import
  3. 导入后的项目结构:

    项目结构
  4. 在cn.luxiaofen.test包下新建一个TvseriesController类


    课时3.1
  5. 在浏览器中测试,地址是http://localhost:8080/tvseries

    课时3.2

一个简单的RESTful API

一般项目不会像上面所说的这么简单,返回的应该是一个对象不是一个Map。

  1. 在cn.luxiaofen.test新建一个TvseriesDto类


    TvSeriesDto
  2. 修改Controller中的方法:


    修改方法
  3. 到浏览器中去验证


    课时4.3
  4. 如果希望修改时间显示,需要修改JSON的一些参数

日期型转JSON格式

  • 可以在属性上增加 @JsonFormat(timezone=“GMT+8”, pattern=“yyyy-MM-dd”) 或 @JsonFormat(shape = JsonFormat.Shape.NUMBER)
  • 全局修改可以在application.yml
    spring
       jackson:
       date-format: yyyy-MM-dd  #如果使用字符串型表示,用这行设置格式
       timezone: GMT+8 #改成东八区的时间
       serialization:
       write-dates-as-timestamps: true  #使用数值timestamp表示日期
    
  • 两个方法可以一起使用,注解形式会优先

在配置文件中修改JSON格式

  1. 将.properties文件改成.yml文件,看起来会比较方便


    课时4.4
  2. 修改.yml文件


    课时4.5
  3. 重启Spring Boot,到浏览器中查看


    课时4.6

参考博文:
https://blog.csdn.net/hjc1984117/article/details/77334616

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容