Zmieniony format odpowiedzi po dodaniu CORS

0

Hej, przed dodaniem obsługi CORS'a w Spring Boot moje odpowiedzi dla błędów wyglądały tak:

{
    "timestamp": "2023-11-25T20:31:4.954533400",
    "status": 400,
    "error": "BAD_REQUEST",
    "message": "My message for not blank annotation",
    "path": "/api/objects"
}

Po dodaniu takiego kodu:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Value("${application.cors.allowed-domains}")
    private List<String> allowedDomains;

    @Override
    public void addCorsMappings(CorsRegistry corsRegistry) {
        corsRegistry.addMapping("/**")
                .allowedOrigins(allowedDomains.toArray(new String[0]))
                .allowedMethods(CorsSettings.allowedHttpMethods)
                .allowedHeaders(CorsSettings.allowedHeaders)
                .exposedHeaders(CorsSettings.exposedHeaders)
                .allowCredentials(true)
                .maxAge(CorsSettings.MAX_AGE);
    }
}

odpowiedzi wyglądają tak:

{
    "timestamp": [
        2023,
        11,
        25,
        20,
        31,
        4,
        954533400
    ],
    "status": 400,
    "error": "BAD_REQUEST",
    "message": "{notBlankMessage}",
    "path": "/api/objects"
}

Jak widać zmienił się format dat oraz wyświetlanie wiadomości dla walidowanych obiektów (oznaczonych adnotacją @NotBlank + @Valid w kontrolerze) nie działa
Co mam zrobić żeby przywrócić stary format i zachować CORS'a?

0

Wyświetlanie wiadomości udało mi się naprawić dodając:

    @Bean
    @Override
    public Validator getValidator() {
        LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean();
        bean.setValidationMessageSource(messageSource());
        return bean;
    }

    @Bean
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:messages");
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }

Jeszcze został problem z datami :/

Ale lipa, że trzeba coś dopisywać przy odpalaniu CORS'a, chyba że coś źle robię?

0

Pokombinuj coś z jacksonowymi modułami dnośnie javy 8 i dat, np:

https://stackoverflow.com/questions/21384820/is-there-a-jackson-datatype-module-for-jdk8-java-time

0

Jestem głupi, wystarczyło wywalić @EnableWebMvc, skopiowałem to z Baeldung i myślałem że musi być, żeby CORS działał...

1 użytkowników online, w tym zalogowanych: 0, gości: 1