# CourseRestApi **Repository Path**: awakelee/CourseRestApi ## Basic Information - **Project Name**: CourseRestApi - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-11-28 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # README ## 说明 每一个文件夹和每一个文件都是一个模型,它们都被看待成一种“文件”。 path属性为文件夹或文件所在的上一级目录的绝对路径 name为文件夹或文件的名称 使用这两项属性即可完成定位 目前没有使用到数据库,所以用JSON来代替,在工具包的DataStore类里得以实现。 Query类集成了一些查询方法,实际上是模拟了数据库的简单操作。 部分细节验证过程存在问题。 ## 领域设计 ### BaseModel 基础类 ``` java package bmatch.tech.file.model; /** * 公共类 * */ public class BaseModel { /** * 唯一主键 */ private String id; /** * 创建时间 */ private Date gmtCreated; /** * 修改时间 */ private Date gmtModified; } ``` ### MyDirectory 文件夹 ``` java package bmatch.tech.file.model; /** * MyDirectory * **/ public class MyDirectory extends BaseModel { /** * 文件夹名 */ private String name; /** * 文件夹所在路径 */ private String path; } ``` ### MyFile 文件 ``` java package bmatch.tech.file.model; /** * 文件 * **/ public class MyFile extends BaseModel{ /** * 文件名 */ private String name; /** * 文件所在路径 */ private String path; /** * 文件对应硬盘的绝对存储位置 */ private String storePath; } ``` ### Files 列举类 ``` java package bmatch.tech.file.model; /** * 列举文件和文件夹时返回的类 * **/ public class Files { /** * 文件夹 */ private List directories; /** * 文件 */ private List files; } ``` ### Response 响应 参考资料:刘少帅的课程作业 https://gitee.com/treeliked/restfulapidemo/tree/master/src/main/java/com/treeliked/pojo ```java packagexiangying bmatch.tech.file.model; /** * Response * **/ public class Response { public static final int RESPONSE_OK = 200; public static final int RESPONSE_BAD_REQUEST = 400; public static final int RESPONSE_SERVER_ERROR = 500; /** * 响应码 */ private int code; /** * 响应信息 */ private String message; /** * 其他数据 */ private Object data; public Response(int code, String message) { this.code = code; this.message = message; } public Response() { } } ``` ## Resource设计 ### Cloud #### 列出指定路径下的内容 ``` METHOD: GET Produces: JSON PATH: /cloud/display queryParams: userId //用户主键 path //文件夹路径 从“/”开始 ``` ### Directory #### 添加一个文件夹 ``` METHOD: GET Produces: JSON PATH: /cloud/directory/create queryParams: userId //用户主键 path //文件夹父路径 从“/”开始 name //文件夹名称 ``` #### 删除一个文件夹 ``` METHOD: GET Produces: JSON PATH: /cloud/directory/delete queryParams: userId //用户主键 path //文件夹父路径 从“/”开始 name //文件夹名称 ``` #### 修改文件夹名称 ``` METHOD: GET Produces: JSON PATH: /cloud/directory/rename queryParams: userId //用户主键 path //文件夹父路径 从“/”开始 originaName //原文件夹名称 targetName //修改文件夹名称 ``` #### 转移文件夹 ``` METHOD: GET Produces: JSON PATH: /cloud/directory/shift queryParams: userId //用户主键 name //文件夹名称 originaPath //原文件夹父路径 targetPath //目标文件夹所在路径 ``` ### File #### 上传一个文件 参考资料: https://www.cnblogs.com/HEWU10/p/5082923.html ``` METHOD: POST Produces: JSON Consumes: Form PATH: /cloud/file/upload formDataParams: file // 上传文件数据流 userId //用户主键 name //文件名称 path //上传到路径 ``` #### 删除一个文件 ``` METHOD: GET Produces: JSON PATH: /cloud/file/delete queryParams: userId //用户主键 path //文件夹父路径 从“/”开始 name //文件名称 ``` #### 修改文件名称 ``` METHOD: GET Produces: JSON PATH: /cloud/file/rename queryParams: userId //用户主键 path //文件夹父路径 从“/”开始 originaName //原文件名称 targetName //修改文件名称 ``` #### 转移文件 ``` METHOD: GET Produces: JSON PATH: /cloud/file/shift queryParams: userId //用户主键 name //文件名称 originaPath //原文件父路径 targetpath //目标文件路径 ``` #### 下载文件 参考资料: https://blog.csdn.net/qq_28334711/article/details/54910161 ``` METHOD: GET Produces: JSON PATH: /cloud/file/download queryParams: userId //用户主键 name //文件名称 path //文件父路径 ```