Fred Friis
06/20/2023, 9:01 PMroute("/v1/interactions/taps") {
post {
val req = call.receive<AddTapRequest>()
where
data class AddTapRequest(val recipientId: Long, val tapType: Int)
if called with
POST v1/interactions/taps { "tapType":1 }
ie no recipient (it's a required attribute)
rather than failing the request, Ktor just pretends like the caller sent recipientId 0Trevor Stone
06/20/2023, 9:24 PMFred Friis
06/20/2023, 9:26 PMTrevor Stone
06/20/2023, 9:26 PMFred Friis
06/20/2023, 9:29 PMinstall(ContentNegotiation) {
fooJackson()
}
where
fun Configuration.fooJackson(block: ObjectMapper.() -> Unit = {}) {
jackson {
standardFooJacksonMapperConfig()
block()
}
}
fun ObjectMapper.standardFooJacksonMapperConfig() {
configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
configure(DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS, false)
configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE, true)
configure(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS, false)
configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, true)
configure(SerializationFeature.WRITE_ENUMS_USING_INDEX, false)
registerModule(JavaTimeModule())
}
Ivan Pavlov
06/20/2023, 9:35 PMFred Friis
06/20/2023, 9:38 PMTrevor Stone
06/20/2023, 9:43 PMTrevor Stone
06/20/2023, 9:44 PMFred Friis
06/20/2023, 9:44 PMFred Friis
06/20/2023, 9:45 PMTrevor Stone
06/20/2023, 9:45 PMrequired
."Trevor Stone
06/20/2023, 9:45 PMTrevor Stone
06/20/2023, 9:49 PMfalse
Fred Friis
06/20/2023, 9:49 PMTrevor Stone
06/20/2023, 9:49 PMFred Friis
06/20/2023, 9:49 PMFred Friis
06/20/2023, 9:50 PMTrevor Stone
06/20/2023, 9:50 PMTrevor Stone
06/20/2023, 9:52 PMFred Friis
06/20/2023, 9:53 PMTrevor Stone
06/20/2023, 9:58 PMTrevor Stone
06/20/2023, 9:58 PM@Consumes(MediaType.APPLICATION_JSON)
, it uses the Dropwizard-provided Jackson support which, in addition to parsing the JSON and mapping it to an instance of Notification
, also runs that instance through Dropwizard’s Constraining Entities."Trevor Stone
06/20/2023, 9:59 PM@NonNull
annotation that kotlin exposes to java callersFred Friis
06/20/2023, 10:03 PM