현재 프론트엔드 코드 로직상 sortBy, sortDirection 매핑 값 확인
sortBy: 'watcherCount', sortDirection: 'DESCENDING'sortBy: 'createdAt', sortDirection: 'DESCENDING'sortBy: 'rate', sortDirection: 'DESCENDING'Sort 클래스의 Sort.Direction 은 “ASC”, “DESC”만 지원하므로 “ASCENDING”, “DESCENDING”을 변환할 필요가 있음
| query param | JSON body | |
|---|---|---|
addFormatters (Converter) |
✓ | ✗ |
@JsonCreator |
✗ | ✓ |
임의로 WebConfig 클래스를 추가 후 프론트에서 들어오는 값들을 Enum으로 매핑함
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addConverter(String.class, Sort.Direction.class, value -> {
if (value.equalsIgnoreCase("ASCENDING") || value.equalsIgnoreCase("ASC")) {
return Sort.Direction.ASC;
}
if (value.equalsIgnoreCase("DESCENDING") || value.equalsIgnoreCase("DESC")) {
return Sort.Direction.DESC;
}
throw new InvalidSortDirectionException(value);
});
registry.addConverter(String.class, ContentSortByType.class, ContentSortByType::from);
registry.addConverter(String.class, ContentType.class, ContentType::from);
registry.addConverter(String.class, SortByType.class, SortByType::from);
}
}