瀏覽代碼

oss-store 引入 swagger

reghao 1 年之前
父節點
當前提交
b499953820

+ 11 - 0
oss-store/pom.xml

@@ -156,6 +156,17 @@
             <artifactId>activation</artifactId>
             <version>1.1.1</version>
         </dependency>
+
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>2.9.2</version>
+        </dependency>
     </dependencies>
 
     <profiles>

+ 42 - 0
oss-store/src/main/java/cn/reghao/oss/store/config/SwaggerConfig.java

@@ -0,0 +1,42 @@
+package cn.reghao.oss.store.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Profile;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+/**
+ * 配置 Swagger
+ *
+ * @author reghao
+ * @date 2019-05-14 17:01:07
+ */
+@Profile({"dev"})
+@Configuration
+@EnableSwagger2
+public class SwaggerConfig {
+    @Bean
+    public Docket createRestApi() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .apiInfo(apiInfo())
+                .select()
+                .apis(RequestHandlerSelectors.basePackage("cn.reghao.oss.store"))
+                .paths(PathSelectors.any())
+                .build();
+    }
+
+    private ApiInfo apiInfo() {
+        return new ApiInfoBuilder()
+                .title("oss APIs")
+                .description("")
+                .termsOfServiceUrl("")
+                .version("1.0.0")
+                .build();
+    }
+}

+ 5 - 0
oss-store/src/main/java/cn/reghao/oss/store/controller/ObjectGetController.java

@@ -13,6 +13,8 @@ import cn.reghao.oss.store.util.ObjectUtil;
 import cn.reghao.oss.store.util.SignatureUtil;
 import cn.reghao.oss.api.dto.OssPayload;
 import com.github.benmanes.caffeine.cache.Cache;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -22,6 +24,7 @@ import java.io.IOException;
  * @author reghao
  * @date 2022-12-08 20:38:33
  */
+@Api(tags = "对象访问接口")
 @RestController
 public class ObjectGetController {
     private final GetObjectService getObjectService;
@@ -37,6 +40,7 @@ public class ObjectGetController {
         this.cache = cache;
     }
 
+    @ApiOperation(value = "使用 HEAD 方法判断对象是否存在")
     @RequestMapping(value = "/**", method = RequestMethod.HEAD)
     public void headObject(@RequestParam(value = "sha256sum", required = false) String sha256sum) throws IOException {
         if (sha256sum != null) {
@@ -47,6 +51,7 @@ public class ObjectGetController {
         }
     }
 
+    @ApiOperation(value = "通过 objectName 访问对象")
     @GetMapping(value = "/**")
     public void getObject(@RequestParam(value = "token", required = false) String token,
                           @RequestParam(value = "t", required = false) Long timestamp,

+ 7 - 0
oss-store/src/main/java/cn/reghao/oss/store/controller/ObjectMultipartUploadController.java

@@ -3,6 +3,8 @@ package cn.reghao.oss.store.controller;
 import cn.reghao.oss.store.service.ObjectMultipartUploadService;
 import cn.reghao.jutil.jdk.result.WebResult;
 import cn.reghao.oss.api.rest.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.http.MediaType;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -14,6 +16,7 @@ import java.util.*;
  * @author reghao
  * @date 2022-12-08 20:40:55
  */
+@Api(tags = "分片上传接口")
 @RestController
 public class ObjectMultipartUploadController {
     private final ObjectMultipartUploadService objectMultipartUploadService;
@@ -22,12 +25,14 @@ public class ObjectMultipartUploadController {
         this.objectMultipartUploadService = objectMultipartUploadService;
     }
 
+    @ApiOperation(value = "创建对象分片上传")
     @PostMapping(value = "/", params = {"create"}, produces = MediaType.APPLICATION_JSON_VALUE)
     public String create(@Validated UploadPrepare uploadPrepare) {
         UploadPrepareRet uploadPrepareRet = objectMultipartUploadService.prepareUpload(uploadPrepare);
         return WebResult.success(uploadPrepareRet);
     }
 
+    @ApiOperation(value = "获取已上传的对象分片")
     @GetMapping(value = "/", params = {"multipart"}, produces = MediaType.APPLICATION_JSON_VALUE)
     public String getUploadedPart() {
         UploadedPart uploadedPart = new UploadedPart();
@@ -38,12 +43,14 @@ public class ObjectMultipartUploadController {
         return WebResult.success(uploadedPart);
     }
 
+    @ApiOperation(value = "上传对象分片")
     @PostMapping(value = "/", params = {"multipart"}, produces = MediaType.APPLICATION_JSON_VALUE)
     public String uploadPart(MultipartFile file, @Validated UploadFilePart uploadFilePart) throws Exception {
         UploadFileRet uploadFileRet = objectMultipartUploadService.putFilePart(file.getInputStream(), uploadFilePart);
         return WebResult.success(uploadFileRet);
     }
 
+    @ApiOperation(value = "合并对象分片")
     @PostMapping(value = "/", params = {"merge"}, produces = MediaType.APPLICATION_JSON_VALUE)
     public String merge() {
         return WebResult.success();

+ 6 - 0
oss-store/src/main/java/cn/reghao/oss/store/controller/ObjectUploadController.java

@@ -13,6 +13,8 @@ import cn.reghao.jutil.web.ServletUtil;
 import cn.reghao.oss.api.dto.OssPayload;
 import cn.reghao.oss.api.rest.UploadFileRet;
 import com.github.benmanes.caffeine.cache.Cache;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.apache.commons.io.FileUtils;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
@@ -27,6 +29,7 @@ import java.util.UUID;
  * @author reghao
  * @date 2023-05-19 16:20:12
  */
+@Api(tags = "对象上传接口")
 @RestController
 public class ObjectUploadController {
     private final ChannelValidateService channelValidateService;
@@ -47,11 +50,13 @@ public class ObjectUploadController {
         this.cache = cache;
     }
 
+    @ApiOperation(value = "使用 PUT 方法上传对象")
     @PutMapping(value = "/**")
     public String putObject(@RequestBody File file) {
         return WebResult.failWithMsg("not implement");
     }
 
+    @ApiOperation(value = "使用 POST 方法上传对象")
     @PostMapping(value = "/", produces = MediaType.APPLICATION_JSON_VALUE)
     public ResponseEntity<String> postObject(MultipartFile file, Integer channelId, String objectName,
                                              String client, String sha256sum) throws Exception {
@@ -123,6 +128,7 @@ public class ObjectUploadController {
         return ResponseEntity.status(HttpStatus.OK).body(WebResult.success(uploadFileRet));
     }
 
+    @ApiOperation(value = "删除对象")
     @DeleteMapping(value = "/")
     public ResponseEntity<String> deleteObject(String objectId) {
         //putObjectService.deleteObject(objectId);