Как передать файл JSON из серверной части в интерфейсную - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть файл JSON со списком продуктов в моем бэк-энде (Spring).Я хочу иметь возможность передавать содержимое во внешний интерфейс (в Angular).

У меня есть файл JSON в папке ресурсов в моем внешнем интерфейсе, созданный с помощью angular.Это файл JSON:

    [ {
        "brand": "",
        "category": {
          "id": 29,
          "name": "hand held"
        },
        "description": "New D131 Scanner complete",
        "hidden": false,
        "id": 10,
        "image": null,
        "productNumber": "E14NO1617",
        "quantity":1
      },
      {
        "brand": "",
        "category": {
          "id": 29,
          "name": "hand held"
        },
        "description": "New D132 Scanner complete",
        "hidden": false,
        "id": 10,
        "image": null,
        "productNumber": "E14NO1617",
        "quantity":1
      },
      {
        "brand": "",
        "category": {
          "id": 50,
          "name": "card reader"
        },
        "description": "USB,
        "hidden": false,
        "id": 26,
        "image": null,
        "productNumber": "ST-1044UB",
        "quantity": 1
      }
      ]

Затем я отображаю объекты (продукты в моем случае) на столе со следующей функцией в сервисе:

    getTemplates() : Promise<Product[]> {
      return this.http.get<Product[]>("http://localhost:4200/assets/BirdyProducts.json")
        .toPromise();
    }

Это работает точно так же, какЯ хочу, чтобы он отображался, но я не хочу хранить JSON в папке внешних ресурсов.Я хочу, чтобы он находился в моем бэк-энде в папке ресурсов и отправлял файл с rest-контроллером и все равно получал тот же результат.

Я много пробовал с Objectmapper, JSONObjects, ... но сделалне найти решение.

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018
@RestController
@RequestMapping
public class ExampleController {
    @GetMapping("/BirdyProducts")
    public InputStreamResource getJsonFile() throws IOException {
        return new InputStreamResource(new ClassPathResource("/assets/BirdyProducts.json").getInputStream());
    }
}

Когда я запрашиваю http://localhost:8080/BirdyProducts, я получаю содержимое файла.

Файл находится в папке \src\main\resources\assets на стороне сервера.

0 голосов
/ 27 декабря 2018
@Controller
public class BirdyProductsController {

    @RequestMapping(
      value = "/birdyProducts", 
      method = RequestMethod.GET, 
      produces = MediaType.APPLICATION_JSON_VALUE
    )

    String getBirdyProducts() {
        return "json/BirdyProducts.json";
    }
}

Это сработало для меня.

Путь к файлу JSON: \ src \ main \ resources \ static \ json \ BirdyProducts.json

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...