Конвертация JSON строки в GZIP и обратно
Контроллер на бэке:
@GetMapping("/accounts/list/all")
public ResponseEntity<String> getClients(){
List<AccountResponseDTO> clients = accountService.getAll();
String json = null;
try {
json = mapper.writeValueAsString(clients);
}
catch (JsonProcessingException exc) {
log.warn(exc.getMessage(), exc);
}
byte[] bytes = json.getBytes(StandardCharsets.UTF_8);
String data = null;
try(ByteArrayOutputStream baos = new ByteArrayOutputStream(json.length());
GZIPOutputStream gzip = new GZIPOutputStream(baos, bytes.length);){
gzip.write(bytes);
gzip.flush();
data = baos.toString();
}
catch(IOException exc) {
log.warn(exc.getMessage(), exc);
}
return ResponseEntity.ok().contentType(MediaType.TEXT_PLAIN)
.header(HttpHeaders.CONTENT_ENCODING, "gzip").body(data);
}
Запрос с фронта:
$(document).ready(function(){
$('#clients_table tbody').empty();
$.ajax({
type: 'GET',
url: '/bankdemo/accounts/list/all',
// headers: {'Accept-Encoding' : 'gzip'},
dataType: "text",
success: function(response) {
const json = JSON.parse(response);
$.each(json, function(key, value){
var account = '<tr>'
+ '<td class=align-middle align=center>'+value.id+'</td>'
+ '<td class=align-middle align=center>'+value.name+'</td>'
+ '<td class=align-middle align=center>'+value.surname+'</td>'
+ '<td class=align-middle align=center>'+value.phone+'</td>'
+ '<td></td>'
+ '<td class=align-middle align=center>'+value.birthday+'</td>'
+ '<td class=align-middle align=center>'+value.active+'</td>'
+ '</tr>';
$(account).appendTo('#clients_table tbody');
});
}
});
});
Получаю net::ERR_CONTENT_DECODING_FAILED 200
При разкомментировании headers: {'Accept-Encoding' : 'gzip'} добавляется Refused to set unsafe header
Источник: Stack Overflow на русском