Where has this dependency gone? Intellij says it's...
# ktor
m
Where has this dependency gone? Intellij says it's not found.
Copy code
implementation("io.ktor:ktor-server-serialization:1.4.1")
I'm still confused about setting up kotlinx #serialization with ktor 😩
r
m
Oh I'm sorry, corrected my actual dependency
r
Add the plugin:
Copy code
plugins {
    kotlin("plugin.serialization") version "1.4.10"
}
et la dependece vers la lib json
Copy code
dependencies {
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.0.0")
}
m
Please tell if my setup is proper for serialization:
Copy code
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.0.0")
Copy code
install(ContentNegotiation) {
    Json
}
I did the same
Copy code
val input = call.receive<FindReadersInput>()
I receive 415 in Postman when I call this endpoint
Copy code
@Serializable
data class FindReadersInput (
    val location: Location,
    val radius : Double
)
Copy code
@Serializable
data class Location(
    @SerialName("lat")
    val latitude : Double,
    @SerialName("lng")
    val longitude: Double,
)
r
Unfortunatelly the new web site is a mess and there's no example to the use of the lib
😭 1
yes the data class looks good your problom with with serializtion or deserialization ?
r
I don’t get it you’re talking about both server and client libraries there, what are you doing?
r
good point
m
Copy code
routing {
    post("/readers") {
        val input = call.receive<FindReadersInput>()
        val readers = DBRepo.getReaders(input.radius, input.location)
        call.respond(readers)
    }
}
This is my endpoint. When I hit it, I get 415 unsupported media type
{     "location": {         "lat": -73.97,         "lng": 40.77     },     "radius": 50.0 }
This is the request body
r
You’ve got an HTTP GET with a request body?
m
No ,edited it. It's a POST
r
make sure une your request you added the content-type as json
r
I don’t think you installed content negotiation properly, follow the documentation
m
image.png
r
Server does not support json because you didn’t install its support.
r
It's a shame the web site or their samples git repository does not show a kx.serislization example... Any reason why you want it instead of Jackson ?
r
What do you mean no example? Did you even open the documentation?
r
m
@ribesg I did install it. I posted above already, but here you go:
Copy code
install(ContentNegotiation) {
    Json 
}
r
@manlan RTFM and try again
1
m
@Razvan No particular reason, except to use pure Kotlin libraries whenever I can
r
@Razvan this is the page referencing the kolinx.serialization library, among other kotlinx libraries.
I linked the Content Negotation with kotlinx.serialization documentation page, which is very clear and very easy to find.
👍 1
m
@ribesg Just asking to follow the documentation when it's not clear enough isn't of any help. The links that you posted show only a minor code sample, but not a proper guide with respect to setting up what's required for this to work.
r
The documentation page I linked covers and fixes your exact problem. The documentation also contains dozens of full examples. You failing to navigate and read the documentation properly doesn’t make it bad.
r
Won't say very easy to find... but ok it's there... when you're getting started it's not that obvious that you have to look there... when there's a menu kotlinx/kotlinx.serisalization it could link to a real example or a github repository. the new web site is a mess IMHO i struggle finding things in it and I'm not new to it.
r
If you think the documentation has issues, then you can maybe fix them as others may not be aware of them. It’s open source.
Maybe the page you linked could link to the page I linked for example
m
@ribesg I didn't say it's bad, I said it's not clear enough. If what's mentioned there is correct, how come
serialization()
doesn't resolve at all with all the correct dependencies? If your only contribution to my question is to ask me check the documentation, thanks, I did that already, which didn't seem clear enough to me, bringing me here to ask for help.
r
Did you setup the
ktor-serialization
feature?
The ktor serialization feature is named
ktor-serialization
not
ktor-server-serialization
👍🏼 1
m
Thank you, that's the only change I had to make. I doubted my dependencies and that's what I initially posted for a review.
r
I didn’t get it right away because it should be renamed from
ktor-serialization
to
ktor-server-serialization
in the future (it’s being discussed). Ktor used to be server only, so naming everything
server
didn’t make sense. Now we have
ktor-serialization
and
ktor-client-serialization
, it’s confusing.
m
Confusing indeed