j-snow
@j-snow
Java junior developer

Как типизировать multipart/form-data?

Привет всем!

Имею клиент-серверное приложение написанное на TypeScript+Kotlin.
В одном месте на клиенте собираю необходимые данные в виде multipart/form-data и передаю их на сервер.

Вопрос:
Как не хардкодить ключи (названия элементов multipart) и сделать всё типобезопасно?

Сейчас всё выглядит примерно так:
const formData = new FormData()
formData.append("name", "John")
formData.append("surname", "Snow")
formData.append("photo", blob)
axios.post("/backend/api", formData)

multipart.forEachPart { part ->
    when (part) {
        is PartData.FormItem -> {
            when (part.name) {
                "user" -> {}
                "surname" -> {}
            }
        }
        is PartData.FileItem -> {}
    }
}

Хардкод как на клиенте, так и на бэкенде.
Как исправить?
  • Вопрос задан
  • 657 просмотров
Пригласить эксперта
Ответы на вопрос 1
Alex_Wells
@Alex_Wells
PHP/Kotlin
Опишите ДТОшку (тупо класс с филдами) и сериализуйте на фронте, десериализуйте (мапьте) на бэке.

На бэке может выглядеть как:
data class SomeRequestDTO(val name: String, val surname: String, val photo: Photo)

и какой-нить маппер, который автоматически это все замапит куда нужно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы