课程管理-删除课程删除视频(接口) | 学习笔记

简介: 简介:快速学习课程管理-删除课程删除视频(接口)

开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):课程管理-删除课程删除视频(接口)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/667/detail/11418


课程管理-删除课程删除视频(接口)

 

删除课程删除视频

我们在删除视频的时候有一个特点,删除课程就要把它的章节,小节,描述都删除,所以我们现在添加视频,一个课程中有很多小节,每个小节中又有视频,所以这里的特点就是,我们在删除课程的时候,视频有多个,至少应该是一个,所以我们的效果就是删除课程删除视频,这个我们需要明确。那我们要怎么做呢?

讲解如下:

直接找到删除代码,来到 vod 中,打开 vod ,直接看代码,在代码中我们可以看到我们在上午在 vod 中写过的删除代码,

@DeleteMapping("removeAlyVideo/ {id}")

public R removeAlyVideo(@PathVariable String id){

try{

//初始化对象

DefaultAcsClient client = InitVodCilent. initVodClient(ConstantVodUtils. ACCESS KEY ID

//创建删除视频request对象

DeleteVideoRequest request =new DeleteVideoRequest(:

//向request设置视频id

request.setVideoIds(id);

//调用初始化对象的方法实现删除

client.getAcsResponse(request);

return R. ok();

} catch(Exception e){

e.printStackTrace()

但这个方法做的是跟据你的视频 id 删除你的视频,是删除某一个视频,而我们现在是删除多个视频,所以有多种方式来解决这个问题。第一种方法就是接口可以新写一种接口,可以做一个循环,循环掉这个循环的方法,这样我们就可以做到删除多个视频。

假如我现在有三个视频,那我循环三次,每次都调用这种方法,我那么多个视频是可以删除的,这样做是可以的,但是我们为了更区分一下,让大家有一个更深入的印象,因此重新写了一个方法,专门做一个删除多个视频的方法,注意我写的目的,在实际的开发中,如果不写,使用这个方法循环删除,是没有问题的,再写一个方法进行删除多个视频也是可以的,使用哪种取决于自己,只是我提供更多的一种方式。

1、 在 service-vod 创建接口,删除多个视频

在 vod 中的 control 中写一个方法。

//删除多个阿里云视频的方法

//参数是多个视频 id,

@DeleteMapping("delete-batch")

public R deleteBatch(@RequestParam (“videoidlist”)list videoidlist){

在课件中找到并填写删除多个视频的方法;

return R. ok():

因为我们现在要删除多个视频,如果删除一个视频,只需要传入一个视频 id;要删除多个视频就要传入多个 id,在 setVideoids(id);中就可以传入多个视频 id,之间用逗号隔开,所以我们现在就需要传入多个视频id。

有一种最简单的一种方式,这些String中只能传入一个值,所以我们加个string数组就可以添加多个值,但一般情况下更建议用 list 来传入,在这个集合中能放入多个数据,所以我们现在使用 list 来传递多个值,所以代码中填写上 list videoidlist,就是我们的参数,但是我们为了更明显,我们可以加上一个注解,(@RequestParam,并加上参数名称,所以我们就参数传过来了。

删除的写法和以下写法应该是一样的,

try

//初始化对象

DefaultAcsClient client = InitVodCilent. initVodClient(ConstantVodUtils. ACCESS KEY ID.

//创建删除视频request对象

DeleteVideoRequest request =new DeleteVideoRequest();

//video list值转换成1,2,3,

//向request设置视频id

//1,2,3

id request.setVideoIds(id);

//调用初始化对象的方法实现删除

client.getAcsResponse(request):

return R.ok();

}catch(Exception e) {

e.printStackTrace();

throw new GuliException(20001,"删除视频失败”):

没有区别,所以我们为了更加明显,将以上代码写入 service 中,专门写他的方法,

//删除多个阿里云视频的方法

//参数多个视频 id List videoIdlist

@DeleteMapping("delete-batch")

public R deleteBatch(@RequestParam("videoIdList") List videoIdList) {

vodService. removeMoreAlyVideo(videoIdList);

return R.ok();

写完之后,我们开始写 service,先创建删除多个视频,之后写 service 对应的实现类,在实现类中实现方法,按照我们最开始的方法,直接复制粘贴

我们可以看到,第一步应该初始化对象,第二步创建删除视频 request 对象,第三步向里面 id request.setVideoIds(id);

设置 id 值,第四步实现调用结果,最后判断说出删除视频失败,

区别就是刚才里面就开始传 id,而我们现在的参数是一个 list 集合,该如何做到,如果说我们一个视频就传一个 id,那多个视频就要传多个 id,所以他们之间需要用逗号隔开,这样的话他们就可以传进来了,如果纸船入个 list 集合,他肯定不认识,它只识别传入的字符串,当多个视频id用逗号隔开,这才是我们的做法,就是将 video list 值转换成1,2,3,

//video list 值转换成1,2,3,

它里面放了多个视频 id,如1,2,3等,所以我们现在第一个做法就是将这个集合做个便利,得到每个值,然后将每个值用逗号做个拼接,传入就可以了,这种方法是没有问题的,但我们还有更简单的方法。

我们可以使用 stringutils,里面有一种 join 的方法,他有加入的意思,而他在这里就表示把我们的数据按照一定的符号进行分割,将我们的 list 集合按照逗号进行分割,这就是 join 方法,所以接下来我们就让 join 发挥功能,为了更加明显,先写一个测试方法,给方法进行测试,测试成功之后再改到这里,

public static void main(String[] args) {

List list =new ArrayList<>();

list.add("11");

list.add("22");

list.add("33");

// 11,22,33

StringUtils . join(list.toArray(),separator:",")

System. out. println(join)

这里要使用 commons.lang.StringUtils. 中的方法,这和我们之前做的是有区别的,传入参数,使用list参数,加上逗号,所以分隔开来,最后还有一个返回值,就是 string,将返回值输出,System. out. println(join)。

注意的是,这里的 stringutils 不是我们之前使用过的,而是一个工具类,而是commons.lang.StringUtils.,,是用这个方法做到的,

这里的 StringUtils 并不是我们之前使用的包中 spring ,而我们使用的是commons.lang.StringUtils.,

包中的 StringUtils,是 apache.commons.lang.StringUtils.,要注意我们使用的是它。

测试完成之后,我们来看一下结果,我们想要的结果就是多个值之间用逗号隔开,启动看结果,直接执行,我们可以看到值都是被逗号隔开的,这就是我们想要的结果,这样我们就完成了。

我们将它完善

//videoIdlist 值转换成1,2,3

String videoIds = StringUtils. join(videoIdList.toArray(), separator: ",");返回之后,ids 直接传入到我们的 request 中,最后他就可以删除多个视频,所以这个代码我们就完成了。

我们先用 list 传递我们的多个视频,然后再 service 中写到删除方法,将list中的值变成多个逗号隔开的效果,调用方法实现删除的功能,

我们主要关于接口的代码就完成了,记住 join 方法。

然后我们在 edu 中做过调用,要实现删除课程删除视频,接口完成,进行调用,

2、在service-edu 调用 service-vod 接口实观剧除多个视频的功能

新建一个 interface ,里面输入名字和方法,调用就能实现。

@FeignClient("service-vod”) //调用的服务名称

@Component

public interface VodClient {

//定义调用的方法路径

//根据视频id删除阿里云视频

//@PathVariable注解一定要指定参数名称,否则出错

@DeleteMapping("/eduvod/video/removeAlyVideo/ {id}")

public R removeAlyVideo(@PathVariable("id") String id):

相关文章
|
监控 网络协议 Go
应用监控 eBPF 版:实现 Golang 微服务的无侵入应用监控
应用监控 eBPF 版:实现 Golang 微服务的无侵入应用监控
109991 226
|
Java 开发者
Java一分钟之-Quasar:协程库
【6月更文挑战第12天】Quasar是Java的高性能协程库,通过字节码增强实现轻量级并发模型——协程和通道,降低并发处理的复杂性和资源消耗。本文探讨了Quasar的常见问题,如内存泄漏、死锁和过度使用,提出相应避免策略,并提供了一个简单的协程间数据交换的代码示例。正确使用Quasar能提升程序性能和可维护性。
718 1
|
人工智能 移动开发 运维
阿里云APP “题库 ” 重磅上线!考取阿里云认证刷题神器,“懒人”必备
阿里云APP上线最新题库功能,和小编一起探索新功能~
13854 17
 阿里云APP  “题库 ”  重磅上线!考取阿里云认证刷题神器,“懒人”必备
invalid-app-id(无效的AppID)参数问题自查方案
1.首先检查支付宝网关     沙箱环境网关为: [url]https://openapi.alipay[/url]dev.com/gateway.do     正式环境网关为: [url]https://openapi.
8817 12
|
机器学习/深度学习 传感器 编解码
一文详解视觉Transformer在CV中的现状、趋势和未来方向(分类/检测/分割/多传感器融合)(中)
本综述根据三个基本的CV任务和不同的数据流类型,全面调查了100多种不同的视觉Transformer,并提出了一种分类法,根据其动机、结构和应用场景来组织代表性方法。由于它们在训练设置和专用视觉任务上的差异,论文还评估并比较了不同配置下的所有现有视觉Transformer。此外,论文还揭示了一系列重要但尚未开发的方面,这些方面可能使此类视觉Transformer能够从众多架构中脱颖而出,例如,松散的高级语义嵌入,以弥合视觉Transformer与序列式之间的差距。最后,提出了未来有前景的研究方向。
一文详解视觉Transformer在CV中的现状、趋势和未来方向(分类/检测/分割/多传感器融合)(中)
|
存储 关系型数据库 MySQL
优化 MySQL 的锁机制以提高并发性能
【10月更文挑战第16天】优化 MySQL 锁机制需要综合考虑多个因素,根据具体的应用场景和需求进行针对性的调整。通过不断地优化和改进,可以提高数据库的并发性能,提升系统的整体效率。
631 1
|
弹性计算 负载均衡 监控
阿里云aca考试大纲 分享阿里云aca题库及答案
现在云计算云服务是高新技术的重要发展发现之一,阿里云长期占有国内的最大市场份额,因此考取阿里云认证也成为想入行的技术人员努力争取的目标,今天就分享阿里云aca题库及答案.希望能帮更多人实现理想。
4010 1
阿里云aca考试大纲 分享阿里云aca题库及答案
|
存储 移动开发 算法
分布式数据库系统期末复习
分布式数据库系统期末复习
317 0
|
Java Linux Windows
【Java用法】Java在Linux下获取当前程序路径以及在Windows下获取当前路径对比
【Java用法】Java在Linux下获取当前程序路径以及在Windows下获取当前路径对比
468 0
|
NoSQL Java Redis
Redis 从入门到精通之Redis数据排序
Redis支持对List、Set和Sorted Set元素进行排序,排序命令是`SORT`。`SORT`命令可以根据指定的排序规则对列表、集合或有序集合的元素进行排序,并返回排序后的元素列表或子集。使用Jedis和RedisTemplate分别实现Redis列表、集合和有序集合排序操作的示例代码
1722 97