From: Kai Moritz Date: Mon, 7 Apr 2025 20:30:32 +0000 (+0200) Subject: `Content-Type` der REST-Antwort ist konfigurierbar X-Git-Url: http://juplo.de/gitweb/?a=commitdiff_plain;h=efb9ff37accec3bd121fb7a103de69098ac6cd8a;p=demos%2Fkafka%2Ftraining `Content-Type` der REST-Antwort ist konfigurierbar --- diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 081cd2f..27eaac2 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -166,6 +166,7 @@ services: juplo.bootstrap-server: kafka:9092 juplo.client-id: ute juplo.consumer.topic: test + juplo.controller.media-type: text/plain ports: - 8881:8881 diff --git a/src/main/java/de/juplo/kafka/ApplicationProperties.java b/src/main/java/de/juplo/kafka/ApplicationProperties.java index ee3d107..626db84 100644 --- a/src/main/java/de/juplo/kafka/ApplicationProperties.java +++ b/src/main/java/de/juplo/kafka/ApplicationProperties.java @@ -5,6 +5,7 @@ import jakarta.validation.constraints.NotNull; import lombok.Getter; import lombok.Setter; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; @@ -22,13 +23,15 @@ public class ApplicationProperties private String clientId; @NotNull - private ConsumerProperties consumer; + private ApplicationProperties.Consumer consumer; + @NotNull + private ApplicationProperties.Controller controller; @Validated @Getter @Setter - static class ConsumerProperties + static class Consumer { @NotNull @NotEmpty @@ -40,4 +43,14 @@ public class ApplicationProperties @NotEmpty private String headerPrefix; } + + @Validated + @Getter + @Setter + static class Controller + { + @NotNull + @NotEmpty + private MediaType mediaType; + } } diff --git a/src/main/java/de/juplo/kafka/DeadLetterController.java b/src/main/java/de/juplo/kafka/DeadLetterController.java index 64553ea..c0d1392 100644 --- a/src/main/java/de/juplo/kafka/DeadLetterController.java +++ b/src/main/java/de/juplo/kafka/DeadLetterController.java @@ -2,8 +2,8 @@ package de.juplo.kafka; import de.juplo.kafka.exceptions.NonExistentPartitionException; import org.apache.kafka.clients.consumer.OffsetOutOfRangeException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.util.UriUtils; @@ -15,8 +15,17 @@ import java.nio.charset.StandardCharsets; @RestController public class DeadLetterController { - @Autowired - DeadLetterConsumer deadLetterConsumer; + private final DeadLetterConsumer deadLetterConsumer; + private final MediaType mediaType; + + + public DeadLetterController( + DeadLetterConsumer deadLetterConsumer, + ApplicationProperties properties) + { + this.deadLetterConsumer = deadLetterConsumer; + this.mediaType = properties.getController().getMediaType(); + } @GetMapping(path = "/{partition}/{offset}") @@ -28,6 +37,7 @@ public class DeadLetterController .requestRecord(partition, offset) .map(record -> ResponseEntity .ok() + .contentType(mediaType) .header( deadLetterConsumer.prefixed(DeadLetterConsumer.KEY), UriUtils.encodePathSegment(record.key(), StandardCharsets.UTF_8)) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 31bec84..652cc9c 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -5,6 +5,8 @@ juplo: group-id: nodlt topic: test header-prefix: X-RECORD- + controller: + media-type: application/json management: endpoint: shutdown: