1、GET、POST、PUT与DELETE的区别
1、GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。
2、与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。
3、POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。
4、DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作。
PUT和POST请求的类似,都是把数据放到请求体Body中,在Controller层中需要是@RequestBody注解
异常处理的方式
例如在套餐的批量删除中
Controller层
Service层
Dao层略
在Service层判断出了商品属于上架状态还不能删除,所以抛出自定义的异常DeletionNotAllowedException。在Controller层中只进行删除成功的返回处理
DeletionNotAllowedException
继承与BaseException,但是这个项目过于简单,所以所有的异常都属于同一层级,没有分层
BaseException很简单,继承了运行时异常RuntimeException,BaseException用于把自定义的异常与SQL抛出的异常分开。
GlobalExceptionHandler
全局异常处理器,通过注解@RestControllerAdvice声明,类中定义了两个成员函数,成员函数用注解 @ExceptionHandler声明;@ExceptionHandle它的作用就是用了捕获异常,比如@ExceptionHandle(abc.class)就是用来捕获abc这种异常的,而这个代码中没有给予参数,所以代表就是捕获所有异常,具体的分类通过成员函数的参数实现,第一个函数捕获BaseException,第二个捕获SQL异常
在具体的成员函数中返回Result.error
阿里云 alioss
是在实现文件上传时实现的
传递给Controller的数据为file类型的(内容为图片)
Controller中的upload方法的参数为MultipartFile file,就是对应与接受file类型的文件。在该Controller中Autowired了AliOssUtil,AliOssUtil中包含了具体把文件上传到阿里云的代码。
下面先不管AliOssUtil,先来看代码中如何实现的AliOss的属性类和工具类
代码访问阿里云如何认证信息,其保存在yml文件中
定义AliOssProperties,有Component注解,放到了Spring容器中
@ConfigurationProperties(prefix = “sky.alioss”)的作用是把该类的成员变量与yml中的值进行对应赋值。
阿里云的工具类,实现了具体的上传文件到阿里云的代码(具体代码不用关注,都是固定的模板),uoload方法返回的是在阿里云返回的访问照片的网络路径。
现在存在的问题是,这个工具类中的成员变量都是空的,还没有赋值,因此就需要接下来创建一个配置类,用户new出工具类并赋值。
配置类
@Bean用于将对象存入spring的ioc容器中,但是与@controller、@Service、@Component、@Configuration、@Repository等几个注解不同的是,@Bean是作用与方法上的。
在这个配置类中的AliOssUtil中new出来工具了,并且赋值了。
好了,到现在在Controller中 @Autowired的AliOssUtil就已经存在与ioc容器中了。