Micronaut Post Call Не принимая тело. Получение тела как необязательное.JAVA

Программисты JAVA общаются здесь
Anonymous
Micronaut Post Call Не принимая тело. Получение тела как необязательное.

Сообщение Anonymous »

Я пытаюсь создать почтовый звонок с помощью Micronaut. Всякий раз, когда я попадаю в API от почтальона, я всегда получаю тело как «необязательный. EMPTY» на сервере.

Код: Выделить всё

import io.micronaut.core.annotation.NonNull;
import io.micronaut.http.HttpHeaders;
import io.micronaut.http.HttpRequest;
import io.micronaut.http.MediaType;
import io.micronaut.http.annotation.*;
import jakarta.inject.Inject;
import lombok.extern.log4j.Log4j2;

import java.util.Objects;

@Controller("/abc/v1")
@Log4j2
public class AbcController {
@Post("/get-new-user-referral-code")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.TEXT_PLAIN)
@WithSpan
public GetReferralCodeResponse getNewUserReferralCode(HttpRequest  request) {
String body = request.getBody().toString();
HttpHeaders headers = request.getHeaders();

log.info("Body = {}", body);

return apiResponse;
}
}
build.gradle:-

Код: Выделить всё

import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
plugins {
id("com.github.johnrengelman.shadow") version "8.1.1"
id("io.micronaut.application") version "4.4.0"
id("io.micronaut.aot") version "4.4.0"
id("groovy")
id("jacoco")
}

version = "0.1"
group = "com.abc"

repositories {
mavenCentral()
}

dependencies {
annotationProcessor("io.micronaut:micronaut-http-validation")
annotationProcessor("io.micronaut.serde:micronaut-serde-processor")
implementation("io.micronaut.serde:micronaut-serde-jackson")
implementation("io.micronaut:micronaut-management")
implementation("io.micronaut:micronaut-http-client")

implementation 'jakarta.annotation:jakarta.annotation-api:2.1.1'
implementation 'jakarta.xml.bind:jakarta.xml.bind-api:4.0.0'

compileOnly 'org.projectlombok:lombok:1.18.30'
annotationProcessor 'org.projectlombok:lombok:1.18.30'
testCompileOnly 'org.projectlombok:lombok:1.18.30'

implementation 'software.amazon.awssdk:bom'
implementation 'software.amazon.awssdk:appconfigdata'
implementation 'software.amazon.awssdk:sts'
implementation 'software.amazon.awssdk:netty-nio-client:2.24.3'
implementation 'io.netty:netty-codec-http:4.1.108.Final'
implementation 'com.github.luben:zstd-jni:1.5.6-6'
implementation 'software.amazon.awssdk:apache-client:2.20.69'
implementation("software.amazon.awssdk:url-connection-client:2.17+")

implementation 'com.amazonaws:aws-lambda-java-core:1.2.3'
implementation 'software.amazon.awssdk:lambda:2.17.206'

implementation 'software.amazon.awssdk:dynamodb'
implementation 'software.amazon.awssdk:dynamodb-enhanced'

implementation 'software.amazon.awssdk:sns'
implementation 'software.amazon.awssdk:sqs'

implementation 'org.apache.logging.log4j:log4j-api:2.20.0'
implementation 'org.apache.logging.log4j:log4j-core:2.20.0'

implementation 'org.json:json:20231013'
implementation 'org.jsonschema2pojo:jsonschema2pojo-core:1.2.1'

// opentelemetry
implementation("io.opentelemetry:opentelemetry-exporter-otlp")
implementation('io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations:2.3.0')
implementation("io.opentelemetry:opentelemetry-exporter-logging")
implementation("io.opentelemetry:opentelemetry-sdk")
implementation("io.reactivex.rxjava2:rxjava:2.2.21")

testAnnotationProcessor 'io.micronaut:micronaut-inject-java'

implementation("io.micronaut.kafka:micronaut-kafka")

developmentOnly("io.micronaut.controlpanel:micronaut-control-panel-ui")
developmentOnly("io.micronaut.controlpanel:micronaut-control-panel-management")

implementation("io.micronaut.objectstorage:micronaut-object-storage-aws")

testImplementation 'org.mockito:mockito-core:3.12.4'

}

application {
mainClass = "com.abc.Application"
}
java {
sourceCompatibility = JavaVersion.toVersion("21")
targetCompatibility = JavaVersion.toVersion("21")
}

graalvmNative.toolchainDetection = false
micronaut {
runtime("netty")
testRuntime("junit5")
processing {
incremental(true)
annotations("com.abc.*")
}
aot {
// Please review carefully the optimizations enabled below
// Check https://micronaut-projects.github.io/micronaut-aot/latest/guide/ for more details
optimizeServiceLoading = false
convertYamlToJava = false
precomputeOperations = true
cacheEnvironment = true
optimizeClassLoading = true
deduceEnvironment = true
optimizeNetty = true
replaceLogbackXml = true
}
}

tasks.named("dockerfileNative") {
jdkVersion = "21.0.4"
}

logs

Код: Выделить всё

"Unrecognized token 'Optional':  was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled)
Запрос Curl:-
curl --location 'http://localhost:8080/abc/v1/get-new-user-referral-code' \
--header 'Content-Length: 1000' \
--header 'Content-Type: text/plain' \
--data 'abc'
< /code>
Я пробовал несколько изменений в доступных документациях, но без удачи.
может кто -нибудь, пожалуйста, помогите мне понять, почему я получаю пустое тело в запросе.>

Подробнее здесь: https://stackoverflow.com/questions/792 ... onal-empty

Вернуться в «JAVA»