c# - 获取json数据和图片

标签 c# json api asp.net-web-api

我有 Web Api Controller ,它从数据库中获取汽车列表

[HttpGet, Route("list")]
public object List()
{
    var cars = context.Cars.ToList();        
    return Json(cars);
}

响应看起来像

[{
   "markName": "Chevrolet",
   "modelName": "Spark EV",
   "year": 2014,
   "id": 1
},
{
   "markName": "Chevrolet",
   "modelName": "Volt",
   "year": 2014,
   "id": 2
}]

我还有一个通过id获取图片的功能

[HttpGet, Route("{id}/photo")]
        public IActionResult GetPhoto(int id)
        {
            string path = "blalblabla"
            Byte[] b = System.IO.File.ReadAllBytes(path);         
            return File(b, "image/jpeg");
        }

如何在一个请求中获取所有数据(json 和图像)?或者我应该用其他方式做到这一点?

最佳答案

您可以创建一个 View 模型来封装所有需要的信息。包括一个 url 到哪里获取图像以及其他元数据

例如。

public class CarModel {
  public string markName { get; set; }
  public string modelName { get; set; }
  public int year { get; set; }
  public int id { get; set; }
  public string photo { get; set; }
}

然后您将包含指向照片操作的链接

[HttpGet("list")]
public IActionResult List() {

    var cars = context.Cars.AsEnumerable();
    var models = cars.Select(car => 
                            new CarModel {
                                markName = car.markName,
                                modelName = car.modelName, 
                                year = car.year,
                                id = car.id,
                                photo = Url.RouteUrl("CarPhoto", new { id = car.id })
                            }).ToList();

    return Ok(models);
}

[HttpGet("{id}/photo", Name = "CarPhoto")]
public IActionResult GetPhoto(int id) {
    string path = "blalblabla"
    Byte[] b = System.IO.File.ReadAllBytes(path);         
    return File(b, "image/jpeg");
}

示例响应可能如下所示

[{
   "markName": "Chevrolet",
   "modelName": "Spark EV",
   "year": 2014,
   "id": 1,
   "photo": "cars/1/photo"
},
{
   "markName": "Chevrolet",
   "modelName": "Volt",
   "year": 2014,
   "id": 2
   "photo": "cars/2/photo"
}]

关于c# - 获取json数据和图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46014097/

相关文章:

c# - 否则,错误检查会更有效吗?

java - 如何在 Android 上使用 Jackson 将 JSON 数组解析为不同的对象?

api - Vue 多个 api 包括

json - JQ 中的可选键

javascript - 谷歌地图 Geojson 信息窗口

api - Binance 的 24 小时百分比变化是如何计算的

api - 是否有包含全局公共(public)/银行假日的综合 API 或 JSON/XML 列表?

c# - 如何合并两个不同对象的列表?

c# - asp.net mvc Bundle.IncludeDirectory 示例?

c# - 如何从输入中获取文件夹/目录路径?