Я разрабатываю API, который получает запрос на публикацию формы от внешнего интерфейса. Форма переднего конца содержит как правильную форму
поля и поле загрузки файла. Допустим, поведение тривиального интерфейса из шоу показано ниже
<form>
<input type="file" name="image">
<input type="text" name="field_1">
<input type="text" name="field_2">
</form>
приведет к следующему почтовому запросу:
Content-Disposition: form-data; name="image"
Content-Type: application/octet-stream
===CONTENT OF THE IMAGE===
Content-Disposition: form-data; name="field_1"
value of field 1
Content-Disposition: form-data; name="field_2"
value of field 2
Но другой бэкэнд-разработчик настоял, чтобы мы обернули все поля, кроме изображения, в объект json
, чтобы запрос выглядел как
Content-Disposition: form-data; name="image"
Content-Type: application/octet-stream
===CONTENT OF THE IMAGE===
Content-Disposition: form-data; name="body"
{
"field_1": "value of field 1",
"field_2": "value of field 2"
}
Наша технология бэкэнда - Spring / Boot, и в результате последняя конструкция значительно упростит сигнатуру нашего контроллера, как
public EmptyResponse acceptFormInput(
@RequestPart EmptyResponse body,
@RequestPart("file") MultipartFile file
)
Мне кажется, что контроллер должен напрямую отражать то, как выглядит наш API. И подпись контроллера должна отражать декларацию API. Но этот коллега-разработчик утверждал, что дизайн API вложенности также является частью стандарта W3C (хотя и в черновом варианте), поэтому должен быть выполнимым. ( План W3C )
У меня проблемы с выяснением того, какая практика является обычной при разработке такого API. Любое предложение приветствуется.