Swagger commonly used several notes

During the internship, do some practice hand project, after the test before and after the end of the separation has become a problem, it just touches a tool, the perfect solution after the separation of the front and rear ends of the back-end development and testing, often used just recently, so compiled some common notes .
Learn some common annotation Swagger:
@Api:
role in the class, the class used to mark specific implementation of the content. This class is a flag indicating swagger of resources.
Parameters:
1.description: describe the role of this class.
2.tags: Set a label of this class.
@ApiOperation:
for transmitting a request, value can be illustrated
@ApiImplicitParam:
acting on the parameters: the parameter for operating
property which contained include the following:

  1. name: parameter name. (Note that this name should be consistent with the actual name of the parameter method, otherwise it will lead to swagger screen appears multiple parameters)
  2. value: the specific meaning of the parameters of the role.
  3. required: Required parameter.
  4. dataType: the parameter data type.
  5. paramType: the type of query parameters, there are several forms:
  6. The type of action
    path submit data in the form of an address
    query is completed automatically mapped directly with the parameter assignment
    body to submit only support POST as a stream of
    header parameters submitted request headers inside the
    form submitted as a form of support only form POST

Note that if you want to pass an object type parameter is not used @ApiImplicitParam, and then annotate method parameters such @RequestBody will use the form to send json parameter
if there is an object parameter method, there is a general parameter, annotations can only ordinary @ApiImplicitParam parameter type, and object type and method of treatment as above,

A number of parameters: @ApiImplicitParams
in the comment which contains multiple @ApiImplicitParam annotations, each annotation separated by commas
@ApiParam
increase of meta-information parameters described in
the following through a simple project code shows some common code that case :( only a part, can not be performed, but writing format to reference)

package com.gwdl.csxt.control.modules.hire.resume.controller;

/**
 * @Auther: yxc
 * @Date: 2019/12/16
 * @Description:招聘模块控制类
 */

import com.gwdl.csxt.control.common.base.constant.DataResult;
import com.gwdl.csxt.control.common.utils.DateUtils;
import com.gwdl.csxt.control.modules.hire.resume.controller.vo.ResumeVO;
import com.gwdl.csxt.control.modules.hire.resume.entity.EvaluationClass;
import com.gwdl.csxt.control.modules.hire.resume.entity.Resume;
import com.gwdl.csxt.control.modules.hire.resume.service.ResumeService;
import com.gwdl.csxt.control.modules.hire.resume.utils.StringToDate;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.Date;
import java.util.List;
import java.util.UUID;

@Api(tags = "招聘管理",description = "用于招聘模块的测试")
@Controller(value = "/resume")
public class ResumeController {
    @Autowired
    private ResumeService resumeService;

    /**
     * 功能描述: 根据id查询简历信息
     * @auther: yxc
     * @return: DataResult
     * @date: 2019/12/16
     */
    @ApiOperation(value = "简历的查询")
    @ApiImplicitParam(value = "根据简历id查询唯一的一份简历", name = "resumeID", paramType = "query", dataType = "String")
    @RequestMapping(value="findResumeByID",method = RequestMethod.GET)
    @ResponseBody
    public DataResult findResume(String resumeID){
        //调用业务层代码查询
        Resume resume = resumeService.findResumeByID(resumeID);
        DataResult result=new DataResult();
        if(resume!=null){
            result.setStatus(0);
            result.setMsg("查询成功");
            result.setData(resume);
            return result;
        }else{
            result.setMsg("无查询用户");
            result.setStatus(1);
            return result;
        }
    }

    /**
     * 功能描述: 查询所有简历
     * @auther: yxc
     * @return: DataResult
     * @date: 2019/12/16
     */
    @ApiOperation(value = "查询所有简历")
    @ApiImplicitParam(value = "查询参数",required = false)
    @RequestMapping(value="findAllResume",method = RequestMethod.GET)
    @ResponseBody
    public DataResult findAllResume(){
        DataResult result=new DataResult();
        List<Resume> allResume = resumeService.findAllResume();
        if(allResume!=null){
            result.setStatus(0);
            result.setMsg("查询成功");
            result.setData(allResume);
            return result;
        }else{
            result.setStatus(1);
            result.setMsg("查询数据失败");
            return result;
        }
    }

    /**
     * 功能描述: 根据id删除简历
     * @auther: yxc
     * @return: DataResult
     * @date: 2019/12/16
     */
    @RequestMapping(value="deleteResume",method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "删除简历")
    @ApiImplicitParam(value = "删除简历", name = "resumeID", paramType = "query", dataType = "String")
    public DataResult deleteResume(String resumeID){
        DataResult result=new DataResult();
        int delete = resumeService.deleteResume(resumeID);
        if(delete==1){
            result.setMsg("删除成功");
            result.setStatus(0);
            return result;
        }else{
            result.setMsg("删除失败");
            result.setStatus(1);
            return result;
        }
    }

    /**
     * 功能描述: 批量删除
     * @auther: yxc
     * @return: DataResult
     * @date: 2019/12/20
     */
    @ApiOperation(value = "批量删除简历")
    @ApiImplicitParam(value = "批量删除",name="resumeID",dataType = "String",paramType = "query",allowMultiple =true )
    @ResponseBody
    @RequestMapping(value = "deleteMany",method = RequestMethod.GET)
    public DataResult deleteMany(String[] resumeID){
        DataResult result=new DataResult();
        resumeService.deleteMany(resumeID);
        result.setStatus(0);
        result.setMsg("删除成功");
        return result;
    }
    /**
     * 功能描述: 多条件查询简历
     * @auther: yxc
     * @return: DataResult
     * @date: 2019/12/16
     */
    @ResponseBody
    @RequestMapping(value="findResumeByCand",method = RequestMethod.POST)
    @ApiOperation(value = "多条件查询")
    @ApiImplicitParams({
            @ApiImplicitParam(value="姓名",name="name",dataType="Stirng",paramType = "query"),
            @ApiImplicitParam(value="简历状态",name="status",dataType="Stirng",paramType = "query"),
            @ApiImplicitParam(value="简历来源",name="source",dataType="Stirng",paramType = "query"),
            @ApiImplicitParam(value="开始时间",name="startTime",dataType="Stirng",paramType = "query"),
            @ApiImplicitParam(value="结束时间",name="endTime",dataType="Stirng",paramType = "query")
    })
    public DataResult findResumeByCand(String name,String status,String source,String startTime,String endTime){
        DataResult result=new DataResult();
        List<Resume> resumeByCand = resumeService.findResumeByCand(name,status,source, startTime, endTime);
        if(resumeByCand!=null){
            result.setMsg("成功");
            result.setStatus(0);
            result.setData(resumeByCand);
            return result;
        }else{
            result.setMsg("失败");
            result.setStatus(1);
            return result;
        }
    }
    /**
     * 功能描述:新增简历
     * @auther: yxc
     * @return: DataResult
     * @date: 2019/12/16
     */
    @ApiOperation(value = "新增简历")
    @ResponseBody
    @RequestMapping(value="insertResume",method = RequestMethod.POST)
    public DataResult insertResume(ResumeVO resumevo, HttpServletRequest request){
        //设置主键
        String s = UUID.randomUUID().toString();
        String replace = s.replace("-", "");
        resumevo.setResumeID(replace);
        //将时间格式转为可以插入数据库的格式
        String birthday = request.getParameter("birthday");
        Date date = StringToDate.StringFormatDate(birthday);
        resumevo.setBirthday(date);
        DataResult result=new DataResult();
        int i = resumeService.insertResume(resumevo);
        if(i==1){
            result.setMsg("新增成功");
            result.setStatus(0);
            return result;
        }else{
            result.setStatus(1);
            result.setMsg("新增失败");
            return result;
        }
    }


    /**
     * 功能描述: 更新简历
     * @auther: yxc
     * @return: DataResult
     * @date: 2019/12/16
     */
    @ApiOperation(value = "更新简历")
    @ApiImplicitParam(value = "更新参数", name = "resumeID", paramType = "query",dataType = "String")
    @RequestMapping(value="updateResume",method = RequestMethod.POST)
    @ResponseBody
    public DataResult updateResume(@RequestBody ResumeVO resumevo, String resumeID){
        //前端获取到的时间数据需要进行类型转换
        DataResult dataResult=new DataResult();
        Date birthday = resumevo.getBirthday();
        String format = DateUtils.format(birthday, DateUtils.DATE_PATTERN);
        Date date = DateUtils.stringToDate(format, DateUtils.DATE_PATTERN);
        resumevo.setBirthday(date);
        int i = resumeService.updateResume(resumevo,resumeID);
        if(i==1){
            dataResult.setMsg("更新成功");
            dataResult.setStatus(1);
            dataResult.setData(resumevo);
            return dataResult;
        }else{
            dataResult.setMsg("更新失败");
            dataResult.setStatus(0);
            return dataResult;
        }
    }
    /**
     * 功能描述:更新简历回显数据
     * @auther: yxc
     * @return: DataResult
     * @date: 2019/12/16
     */
    @ApiOperation(value = "更新简历回显数据")
    @ApiImplicitParam(value = "更新简历id", name = "resumeID", paramType = "query",dataType = "String")
    @RequestMapping(value="updateResumeUI",method = RequestMethod.GET)
    @ResponseBody
    public DataResult updateResumeUI(String resumeID){
        DataResult result = findResume(resumeID);
        return result;
    }


    /**
     * 功能描述:查看审核结果  评价
     * @auther: yxc
     * @return: DataResult
     * @date: 2019/12/20
     */
    @RequestMapping(value="findRemark",method=RequestMethod.GET)
    @ResponseBody
    @ApiOperation("查看简历评价")
    @ApiImplicitParam(value = "简历评价",name="resumeID",paramType = "query",dataType = "String")
    public DataResult findRemark(String resumeID){
        Resume resume = resumeService.findResumeByID(resumeID);
        //简历
        EvaluationClass eva=new EvaluationClass();
        eva.setResumeID(resumeID);
        eva.setResumeNum(resume.getResumeNum());
        eva.setDescription(resume.getDescription());
        eva.setName(resume.getName());
        eva.setEvaluation(resume.getEvaluation());
        eva.setAuditorId(resume.getAuditorId());
        DataResult result=new DataResult();
        result.setData(eva);
        result.setMsg("成功");
        result.setStatus(1);
        return result;
    }
    /**
     * 功能描述: 文件上传功能 上传功能实现以后将文件的文件名保存到数据库中
     * @auther: yxc
     * @return: DataResult
     * @date: 2019/12/19
     */
    @ApiOperation(value="文件上传")
    @ApiImplicitParam(value = "简历唯一ID",name="resumeID",dataType = "String",paramType = "query")
    @RequestMapping(value="uploadFile",consumes = "multipart/*",headers = "content-type=multipart/form-data",method = RequestMethod.POST)
    @ResponseBody
    public DataResult uploadFile(@ApiParam(value = "上传文件",required = true) MultipartFile file, String resumeID,HttpServletRequest request)throws IOException{
        DataResult result=new DataResult();
        if(file.isEmpty()){
            result.setMsg("文件不能为空");
            result.setStatus(1);
            return result;
        }
        //获取文件名
        String fileName=file.getOriginalFilename();
        //获取文件的后缀名 从后面往前截取
        String suffixName=fileName.substring(fileName.lastIndexOf("."));
        //输入流位置
        String uploadFilePath= ResourceUtils.getURL("classpath:").getPath()+"uploadFile/";
        System.out.println(uploadFilePath);
        //下载文件路径
        File dest=new File(uploadFilePath+fileName);
        //如果目录不存在就新建一个
        if(!dest.getParentFile().exists()){
            dest.getParentFile().mkdirs();
        }
        file.transferTo(dest);
        //如果上传成功的话就将文件名保存到数据库中去
        int i = resumeService.updateResumeAttachmentAddress(fileName, resumeID);
        if(i==1){
            result.setMsg("上传成功");
            result.setStatus(1);
            return result;
        }else{
            result.setMsg("文件上传成功,但文件路径没有进入数据库");
            result.setStatus(1);
            return result;
        }

    }

    /**
     * 功能描述: 文件的下载功能,首先获取到数据库中的附件名称,然后实现下载功能
     * @auther: yxc
     * @return: null
     * @date: 2019/12/19
     */
    @ApiOperation(value="文件下载")
    @ApiImplicitParam(value="简历ID",name="resumeID",paramType = "query",dataType = "String")
    @RequestMapping(value="/downFile",method = RequestMethod.GET)
    @ResponseBody
    public DataResult downFile(String resumeID,HttpServletRequest request, HttpServletResponse response)throws Exception{
        DataResult result=new DataResult();
        Resume resume = resumeService.findResumeByID(resumeID);
        String fileName=resume.getResumeAttachmentAddress();
        System.out.println(fileName);
        if(fileName!=null){
            String realPath=ResourceUtils.getURL("classpath:").getPath()+"uploadFile/";
            File file=new File(realPath,fileName);
            if(file.exists()){
                response.setContentType("application/force-download");//设置下载不打开
                //设置文件的中文名称乱码问题
                fileName=new String(fileName.getBytes("UTF-8"),"ISO-8859-1");
                response.addHeader("Content-Disposition",
                        "addachment;fileName="+fileName);//设置文件名
                byte[] buffer=new byte[1024];
                FileInputStream input=null;
                BufferedInputStream bufferInput=null;
                input=new FileInputStream(file);
                bufferInput=new BufferedInputStream(input);
                OutputStream out=response.getOutputStream();
                int i=input.read(buffer);
                while(i!=-1){
                    out.write(buffer,0,i);
                    i=input.read(buffer);
                }
                System.out.println("success");
                //关闭资源
                if(bufferInput!=null){
                    bufferInput.close();
                }
                if(input!=null){
                    input.close();
                }
                if(out!=null){
                    out.close();
                }
            }
        }
        result.setMsg("下载成功");
       return result;
    }

    /**
     * 功能描述: 文件在线浏览功能
     * @auther: yxc
     * @return: DataResult
     * @date: 2019/12/20
     */
    @RequestMapping(value="/openFile",method = RequestMethod.POST)
    @ApiOperation(value="在线浏览")
    @ApiImplicitParam(value="文件浏览",name="resumeID",dataType = "String",paramType = "query")
    public void openFile(String resumeID,HttpServletRequest request) throws Exception {
        //首先查询到简历
        Resume resume = resumeService.findResumeByID(resumeID);
        //获取附件的名称
        String fileName=resume.getResumeAttachmentAddress();
        String uploadFilePath= ResourceUtils.getURL("classpath:").getPath()+"uploadFile/";
        System.out.println(uploadFilePath+fileName);
        //调用程序打开文件
        String cmd="rundll32 url.dll FileProtocolHandler file://"+uploadFilePath+fileName;
        Runtime runtime=Runtime.getRuntime();
        runtime.exec(cmd);

    }

}

The above test some swagger to achieve a common approach, such as multiple parameters passed into how to deal with, is how to deal with an object, an array is a collection of how to deal with, is how to deal with the file. Writing is not perfect, there are many other features not used up. But the most common use include basic, to be expanded to see more information.

Published 33 original articles · won praise 37 · views 4383

Guess you like

Origin blog.csdn.net/weixin_42142899/article/details/103609810