블로그 개발 프로젝트

Swagger @ApiModelProperty에 example List

한뜨응규 2023. 7. 28. 10:12
반응형

이번 프론트 팀의 마지막 부탁

Example Value에도 리스트로 보이게 해주세요.

 

현재

이렇게 보이지만 skillTag는 List이기 때문에 하나 이상 리스트로 보여지게 해야한다.

 

Dto를 살펴보면 

package cobo.blog.domain.Home.Data.Dto;

import cobo.blog.global.Data.Entity.ProjectEntity;
import cobo.blog.global.Data.Entity.ProjectSkillTagMappingEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

@Data
public class HomeProjectRes {

    @ApiModelProperty(
            value = "프로젝트의 소개 이미지 url",
            example = "https://avatars.githubusercontent.com/u/98071131?s=400&u=9107a0b50b52da5bbc8528157eed1cca34feb3c5&v=4"
    )
    private String imgUrl;

    @ApiModelProperty(
            value = "프로젝트의 타이틀",
            example = "블로그 개발 프로젝트"
    )
    private String title;

    @ApiModelProperty(
            value = "프로필에 사용된 스킬들을 문자열",
            example = "SpringBoot"
    )
    private List<String> skillTag;

    public HomeProjectRes(ProjectEntity project) {
        this.imgUrl = project.getImgUrl();
        this.title = project.getTitle();
        this.skillTag = new ArrayList<>();
        for(ProjectSkillTagMappingEntity projectSkillTagMappingEntity : project.getProjectSkillTagMappings())
            skillTag.add(projectSkillTagMappingEntity.getSkillTag().getName());
    }
}

이렇게 되어 있다.

현재 example에 SpringBoot라고만 있기 때문에 그냥 SpringBoot 하나만 띡 보여지게 되는 것이다.

 

이거를 문자열이기에

example = "[\"SpringBoot\", \"JavaScript\", \"MySQL\"]"

그냥 간단하게 이렇게만 고쳐주었다.

이러면

이렇게 원하는 대로 출력이 되게 된다.

하지만 이게 무슨 데이터타입인지 더 구체적으로 알려주기 위해 dataType = "List"를 추가했다.

 

최종 코드이다.

@ApiModelProperty(
            value = "프로필에 사용된 스킬들을 문자열",
            dataType = "List",
            example = "[\"SpringBoot\", \"JavaScript\", \"MySQL\"]"
    )