В вашем случае -
взаимодействия нет, если конечно
frontend на является нативным приложением.
Поясню:
1) backend подготавливает zip-архив и шлет его в бинарном виде через GET/POST/PUT, выставляя заголовок
Content-Type: application/zip
и возможно
Content-Disposition: attachment; filename="myarchive.zip"
2) frontend, принимая данный ответ на свой запрос:
- если это браузер, то просто скачает файл (если не использовали Blob или что-то подобное),
- если это приложение, то получит бинарный поток, который кладет самостоятельно на диск и распаковывает
- если же frontend в виде JS в браузере примет этот поток, то средств его распаковать у браузера нет! можно только показать прогрессию загрузки.