Ceph Swift Api 配置与使用(三)(下)

简介: Ceph Swift Api 配置与使用(三)(下)

六、Ceph Swift Api 调用验证


1、创建ceph-demo工程:



image.png


增加SwiftOperator接口:


@Component
public class SwiftOperator {
    /**
     * 用户名信息, 格式: 主用户名:子用户名
     */
    private String username ="cephtester:subtester";
    /**
     * 用户密码
     */
    private String password = "654321";
    /**
     * 接口访问地址
     */
    private String authUrl = "http://192.168.88.161:7480/auth/1.0";
    /**
     * 默认存储的容器名称(bucket)
     */
    private String defaultContainerName = "user_datainfo";
    /**
     * Ceph的账户信息
     */
    private Account account = null;
    /**
     * Ceph的容器信息
     */
    private Container container;
    /**
     * 进行Ceph的初始化配置
     */
    public SwiftOperator() {
        // 1. Ceph的账户信息配置
        AccountConfig config = new AccountConfig();
        config.setUsername(username);
        config.setPassword(password);
        config.setAuthUrl(authUrl);
        config.setAuthenticationMethod(AuthenticationMethod.BASIC);
        account = new AccountFactory(config).createAccount();
        // 2.获取容器信息
        Container newContainer = account.getContainer(defaultContainerName);
        if(!newContainer.exists()) {
            container = newContainer.create();
            System.out.println("container create ==> " + defaultContainerName);
        }else {
            container = newContainer;
        }
    }
    /**
     * 文件上传处理
     * @param remoteName
     * @param filePath
     */
    public void createObject(String remoteName, String filePath) {
        // 1. 从容器当中获取远程存储对象信息
        StoredObject object = container.getObject(remoteName);
        // 2. 执行文件上传处理
        object.uploadObject(new File(filePath));
    }
    /**
     * 文件的下载处理
     * @param objectName
     * @param outPath
     */
    public void retrieveObject(String objectName, String outPath) {
        // 1. 从容器当中获取远程存储对象信息
        StoredObject object = container.getObject(objectName);
        // 2. 执行文件的下载方法
        object.downloadObject(new File(outPath));
    }
    /**
     * 获取用户下面的所有容器信息
     * @return
     */
    public List listContainer() {
        List list = new ArrayList();
        Collection<Container> containers = account.list();
        for(Container container : containers) {
            list.add(container.getName());
            System.out.println("current container name : " + container.getName());
     }
        return list;
    }
}


这里的用户名和密码填写上面我们所生成的信息。注意路径地址后缀为: /auth/1.0


CephDemoApplication启动类,测试验证:


@SpringBootApplication
@ComponentScan(basePackages = {"cn.it"})
public class CephDemoApplication {
    public static void main(String[] args) throws Exception  {
        // Swift Api接口调用验证
        swiftApi();
    }
    /**
     * 通过Swift接口操作ceph集群
     * @throws Exception
     */
    public static void swiftApi() throws Exception  {
        ConfigurableApplicationContext appContext =  SpringApplication.run(CephDemoApplication.class);
        // 1. 先打印出用户的容器信息
        SwiftOperator swiftOperator = appContext.getBean(SwiftOperator.class);
        swiftOperator.listContainer();
        String objName = "test_ceph";
        // 2. 上传指定的文件
        swiftOperator.createObject(objName, "E:\\test\\upload\\test_swift_ceph.txt");
        // 3. 从ceph下载文件到指定的路径下面
        swiftOperator.retrieveObject(objName, "E:\\test\\download\\test_swift_ceph.txt");
        System.out.println("complete");
    }
}


目录
相关文章
|
1月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
44 4
|
2月前
|
存储 API Swift
Ceph Reef(18.2.X)之Swift操作对象存储网关
这篇文章详细介绍了Ceph Reef(18.2.X)中通过Swift API操作对象存储网关的方法,包括创建用户、子用户、配置环境变量、以及使用swift命令行工具进行存储桶和对象的管理。
36 7
Ceph Reef(18.2.X)之Swift操作对象存储网关
|
6月前
|
JSON API 数据处理
【Swift开发专栏】Swift中的RESTful API集成实战
【4月更文挑战第30天】本文探讨了在Swift中集成RESTful API的方法,涉及RESTful API的基础概念,如HTTP方法和设计原则,以及Swift的网络请求技术,如`URLSession`、`Alamofire`和`SwiftyJSON`。此外,还强调了数据处理、错误管理和异步操作的重要性。通过合理利用这些工具和策略,开发者能实现高效、稳定的API集成,提升应用性能和用户体验。
132 0
|
3月前
|
前端开发 API 网络架构
【Azure 应用服务】能否通过 Authentication 模块配置 Azure AD 保护 API 应用?
【Azure 应用服务】能否通过 Authentication 模块配置 Azure AD 保护 API 应用?
|
3月前
|
安全 API 网络安全
【Azure API 管理】APIM如何配置客户端证书的CRL检测策略
【Azure API 管理】APIM如何配置客户端证书的CRL检测策略
|
4月前
|
API 数据库 数据安全/隐私保护
Django配置api、管理系统和视图
Django配置api、管理系统和视图
116 1
|
3月前
|
JSON 算法 API
【Azure API 管理】APIM 配置Validate-JWT策略,验证RS256非对称(公钥/私钥)加密的Token
【Azure API 管理】APIM 配置Validate-JWT策略,验证RS256非对称(公钥/私钥)加密的Token
|
3月前
|
API
【Azure 环境】在Azure活动目录中的应用注册,给应用添加API权限时发现API权限配置缺失
【Azure 环境】在Azure活动目录中的应用注册,给应用添加API权限时发现API权限配置缺失
|
4月前
|
API
zookeeper 使用api 进行节点增删改查及实现简易的配置中心
zookeeper 使用api 进行节点增删改查及实现简易的配置中心
50 2
|
3月前
|
前端开发 API
【API管理 APIM】APIM中如何配置使用URL路径的方式传递参数(如由test.htm?name=xxx 变为test\xxx)
【API管理 APIM】APIM中如何配置使用URL路径的方式传递参数(如由test.htm?name=xxx 变为test\xxx)

热门文章

最新文章

相关课程

更多
下一篇
无影云桌面