From fdf54063c2fe224142de6cdc5944462052d9807b Mon Sep 17 00:00:00 2001 From: Sindre Kjelsrud Date: Tue, 4 Jul 2023 15:56:01 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=8D=BB=20POST-request=20m/=20payload=20mo?= =?UTF-8?q?t=20backend=20lagt=20til=20+=20jackson=20(heehee)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Amalie Erdal Mansåker Co-authored-by: Markus A. R. Johansen --- backend/build.gradle.kts | 6 ++++++ .../main/kotlin/no/nav/helse/sprik/Test.kt | 10 ++++++++++ .../no/nav/helse/sprik/plugins/Routing.kt | 20 +++++++++++++++++++ frontend/pages/index.tsx | 18 +++++++++++++++++ 4 files changed, 54 insertions(+) create mode 100644 backend/src/main/kotlin/no/nav/helse/sprik/Test.kt diff --git a/backend/build.gradle.kts b/backend/build.gradle.kts index 48b9122..7ece67f 100644 --- a/backend/build.gradle.kts +++ b/backend/build.gradle.kts @@ -27,4 +27,10 @@ dependencies { testImplementation("io.ktor:ktor-server-tests-jvm:$ktor_version") testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version") implementation("io.ktor:ktor-server-cors:$ktor_version") + implementation("io.ktor:ktor-utils:$ktor_version") + implementation("io.ktor:ktor-serialization-kotlinx-json:$ktor_version") + implementation("io.ktor:ktor-server-content-negotiation:$ktor_version") + implementation("io.ktor:ktor-client-content-negotiation:$ktor_version") + implementation("io.ktor:ktor-serialization-jackson:$ktor_version") + implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.3") } \ No newline at end of file diff --git a/backend/src/main/kotlin/no/nav/helse/sprik/Test.kt b/backend/src/main/kotlin/no/nav/helse/sprik/Test.kt new file mode 100644 index 0000000..6fa1f04 --- /dev/null +++ b/backend/src/main/kotlin/no/nav/helse/sprik/Test.kt @@ -0,0 +1,10 @@ +package no.nav.helse.sprik + +class Test ( + var ord: String, + var tall: Int +) { + override fun toString(): String { + return "Test(ord='$ord', tall=$tall)" + } +} \ No newline at end of file diff --git a/backend/src/main/kotlin/no/nav/helse/sprik/plugins/Routing.kt b/backend/src/main/kotlin/no/nav/helse/sprik/plugins/Routing.kt index bf3e889..630e07b 100644 --- a/backend/src/main/kotlin/no/nav/helse/sprik/plugins/Routing.kt +++ b/backend/src/main/kotlin/no/nav/helse/sprik/plugins/Routing.kt @@ -1,19 +1,39 @@ package no.nav.helse.sprik.plugins +import com.fasterxml.jackson.databind.SerializationFeature +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule import io.ktor.http.* +import io.ktor.serialization.jackson.* import io.ktor.server.routing.* import io.ktor.server.response.* import io.ktor.server.application.* +import io.ktor.server.plugins.contentnegotiation.* import io.ktor.server.plugins.cors.routing.* +import io.ktor.server.request.* +import no.nav.helse.sprik.Test fun Application.configureRouting() { install(CORS) { anyHost() allowMethod(HttpMethod.Get) + allowMethod(HttpMethod.Post) + //allowHeader(HttpHeaders.AccessControlAllowOrigin) + allowNonSimpleContentTypes = true + } + install(ContentNegotiation) { + jackson { + disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) + registerModule(JavaTimeModule()) + } } routing { get("/") { call.respondText("Hello World!") } + post("/test") { + val test = call.receive() + println(test) + //call.respondText(test.toString()) + } } } diff --git a/frontend/pages/index.tsx b/frontend/pages/index.tsx index 171cc7f..9d35c22 100644 --- a/frontend/pages/index.tsx +++ b/frontend/pages/index.tsx @@ -1,6 +1,7 @@ import "@navikt/ds-css"; import { Button, Heading } from "@navikt/ds-react"; import axios , { Axios, AxiosError } from "axios"; +import { log } from "console"; import useSWR from "swr"; const fetcher = (url: any) => axios.get(url).then(res => res.data) @@ -10,6 +11,23 @@ export default function Home() { const {data, error, isLoading} = useSWR('http://0.0.0.0:8080/', fetcher); console.log(data); + function post() { + axios.post("http://0.0.0.0:8080/test", { + ord: "heisann hoppsann", + tall: 7 + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then( (response) => { + console.log(response) + }).catch( (error) => { + console.log(error); + }) + } + + post() + return (