Как не показать весь объект API? - PullRequest
0 голосов
/ 31 января 2019

Я не совсем уверен, как назвать этот вопрос или какие именно теги использовать (с удовольствием отредактирую при необходимости).

В классе мы должны построить автономную систему человека (разработчик дляпример) со следующими атрибутами: идентификатор, имя, зарплата, контактная информация и навыки.Весной мы создаем HTML-версию, которая будет отображаться в веб-браузере, банке данных и так далее.Мы должны сохранить журнал всех изменений в банке данных, но при вызове «http://localhost:8080/person/api/events/" из веб-браузера - мы должны« отфильтровать »зарплату, чтобы вы ее не увидели (так что никто за пределамисистема сможет его увидеть).

Это класс person (lohn = salary):

@Data
@Entity
public class Person {
    @Id
    @GeneratedValue(generator = "person_gen", strategy = GenerationType.SEQUENCE)
    @SequenceGenerator(name = "person_gen", sequenceName = "person_gen_my_sql", allocationSize=1)
    private Long id;

    private String name;
    private long lohn;
    private String kontaktdaten;
    private String skills;
    private Long[] projekte;
}

В класс PersonController включен следующий метод:

....
private void savePersonEvent(String type, Person person){
    PersonEvent event = new PersonEvent();
    event.setEvent(type);
    event.setObjekt(person);
    event.setObjektId(person.getId());
    personEventRepository.save(event);
}

Класс PersonEvent:

@Data
@Entity
public class PersonEvent {
    public PersonEvent() {}
    @Id
    @GeneratedValue(generator = "person_event_gen", strategy = GenerationType.SEQUENCE)
    @SequenceGenerator(name = "person_event_gen", sequenceName = "person_event_gen_my_sql", allocationSize=1)
    private Long id;

    @Column(name="personId")
    private Long objektId;
    private String event;

    @ManyToOne(cascade = CascadeType.ALL)
    private Person objekt;

}

И, наконец, класс EvenController:

@RestController
public class EventController {
    @Autowired
    EventProducer eventstream;

    @RequestMapping("/person/api/events")
public PersonEvents feed(@RequestParam(value="last", required = false) Integer last) {
    if(last == null) last = 0;
    return eventstream.from(last);
    }
}

Один человек в БД выглядит следующим образом

При просмотре событий «log» - «lohn: 50000» не должен быть виден (извините, я пока не могу вставлять изображения)

Не знаюя действительно не понимаю, как не включать зарплату. И просто установить ее на 0 не совсем то, что мы просим. Я мог бы просто представить новый класс dummyPerson, который не включает зарплату, но я уверен, чтоесть более элегантное решение.

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