【发布时间】:2021-10-19 09:31:42
【问题描述】:
我想创建一个请求类来收集所有部分(文件和项目)并对其进行验证,类似于我在 json 请求中放置的示例(如下)。
请求 JSON 可序列化示例类
import kotlinx.serialization.Serializable
@Serializable
class CreateGroupRequest(
val name: String,
val description: String? = null,
val visibility: String? = "PUBLIC"
)
处理 JSON 请求示例
route("create") {
post {
val request = call.receive<CreateGroupRequest>()
try {
//CODE
call.respond(HttpStatusCode.OK)
} catch (e: SharedDomainException) {
call.respond(HttpStatusCode(e.errorCode, e.errorMessage))
}
}
}
例如,我的意思是,在这种情况下,我想更改它,因为群组还有我要上传的个人资料照片,或者在其他情况下,帖子域包含文本、作者和多张图片。
我已阅读此stackOverflow post,但我不知道如何创建一个通用类来读取多部分请求,而无需在每个处理程序中复制代码。
那么,有谁知道我如何读取共享类中的请求 multipart-form-data 正文并使用 kotlin/ktor 对其进行验证?
【问题讨论】:
-
您可以将所有需要重用的代码从您所指的帖子中移到单独的函数/扩展中。
-
@PhilipDukhov 不完全是。根据我所附答案的理解,multipart-form-data 的读取是针对具体情况的。如何创建一个通用类来读取多部分并将其放入请求类中?在 JSON 示例中,serializable 解析请求并将其放入一个类中。有没有可能做类似的事情?如何为多部分构建可序列化?
-
据我所知,此示例将数据写入文件。我不太确定您希望如何从中解析课程?无论哪种方式,您都可以取出一些数据读取部分,然后根据需要处理数据。您是否要发送稍后要解析的巨大 JSON?添加一些您打算如何使用它的伪代码。
标签: kotlin multipartform-data ktor