Как получить разные параметры для разных API, как указано ниже - PullRequest
0 голосов
/ 01 мая 2020

Мне нужно получить разные параметры в ответ на 2 разных API getAll и getbyID. Теперь я получаю одинаковый результат - second json для обоих API.

Я хочу получить 1 json в ответ на API getALL без отношения один ко многим, и я хочу получить 2 json в ответ на API getbyid с отношением один ко многим

Первый JSON Ответ:

    {
     "id":2,
     "itemName":"book",

    }

Второй JSON Ответ:

      {
     "id":2,
     "itemName":"book",
     "owner":
        {
            "id":1,
            "name":"John"
        }
    }

Класс пользователя

    public class User {
        public int id;
        public String name;

        @JsonBackReference
        public List<Item> userItems;
    }

Класс предмета

    public class Item {
        public int id;
        public String itemName;

        @JsonManagedReference
        public User owner;
    }

Может ли кто-нибудь помочь в этом?

1 Ответ

1 голос
/ 01 мая 2020

Я предлагаю сделать класс элементов только для передачи данных, например:

public class ItemDTO {
 public int id;
 public String itemName;
}

Тогда в вашем контроллере вы можете сделать что-то подобное:

@GetMapping('/get-all')
public ResponseEntity<ItemDTO> getAll() {
 //get Item object
 Item item = //e.g database call
 ItemDTO itemDTO = new ItemDTO(item.id, item.name);

 return ResponseEntity.ok(itemDTO);
}

@GetMapping('/get-by-id/{id}')
public ResponseEntity<Item> getAll(@PathVariable Integer id) {
 Item item = //e.g get item by id

 return ResponseEntity.ok(item);
}
...