Правильная обработка длины ответа веб-метода - PullRequest
0 голосов
/ 08 мая 2019

есть один веб-метод на моем сервере. Он возвращает простой json с примерно 100-200 записями (20-30 полей на запись).

Результат не большой.

Но новым требованием является добавление одного поля, которое является строкой Base64Encoded.

Строка base64encode конвертируется из изображения (максимум 10 МБ).

Я хотел бы спросить, правильно ли помещать строку изображения в json и, следовательно, в 1 API (тогда json может перейти к 1000–2000 МБ максимум).

Или он должен разделить изображение (большой пакет) на новый API и запросить строку изображения один за другим после получения ответа первого API?

Или есть лучшее решение?

1 Ответ

0 голосов
/ 08 мая 2019

Что я хотел бы сделать в первую очередь, так это иметь простую функцию подкачки.

Secound Я бы просто сделал id Link что-то вроде getImage?id=5.

Когда json слишком великзаймет много времени, чтобы опубликовать его, а также наличие изображения в JSON просто не умная идея, подумайте об этом.Изображение a byte[] при преобразовании его в json будет пытаться преобразовать его в base64string, что займет время.

Время, необходимое для преобразования json, а также отправки json.

Так что id Link - лучшее решение, которое я мог найти.

public class Product{
 public int Id { get; set; }

 public string Name { get; set; }

 [JsonIgnore]
 public byte[] Image { get; set }
}

// controller 

public List<Product> Get(){
 return db.Products.ToList();
}

public FileResult GetImage(int id){
  var img = db.Products.First(x=> x.Id == id).Image;
  return File(img, System.Net.Mime.MediaTypeNames.Application.Octet, "test");
}

/// now lets say that you present your product with js as an example

var products = getProductByAjax();
products.forEach(x=> {
// and here is the image 
var img = "<img src=/Home/GetImage?id="+x.Id+" />";
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...