2013-08-17 2 views
0

Я пытаюсь создать REST API и не понимаю, как представить много одно однонаправленных отношений.REST API Design с однонаправленными отношениями

У меня есть 4 компонента, которые представляют 4 части автомобиля (двигатель, трансмиссия, колеса, корпус).

Теперь, очевидно, что объектам компонента не требуется автомобиль, только автомобиль заботится о компонентах.

Что мне интересно - это лучший способ обработать вход REST ресурса автомобиля.

1) Должен ли я потребовать полностью заполненную модель для отправки в службу (например, включить передачу с полным объектом трансакции)?

2) Отрегулируйте входящие данные, чтобы принимать только идентификатор требуемого объекта (например, engine_id, transmission_id)?

Я немного смущен этим и не могу найти хороший пример после того, как погулял.

public class Engine 
{ 
    private Integer id; 
    // Engine specific stuff 
} 

public class Transmission 
{ 
    private Integer id; 
    // Transmission specific stuff 
} 

public class Wheels 
{ 
    private Integer id; 
    // Wheels specific stuff 
} 

public class Body 
{ 
    private Integer id; 
    // Body specific stuff 
} 


public class Car 
{ 
    @Id 
    private Integer id; 

    @ManyToOne 
    @JoinColumn(name="engine_id") 
    private Engine engine; 

    @ManyToOne 
    @JoinColumn(name="transmission_id") 
    private Transmission transmission; 

    @ManyToOne 
    @JoinColumn(name="wheels_id") 
    private Wheels wheels; 

    @ManyToOne 
    @JoinColumn(name="body_id") 
    private Body body; 
} 

ответ

0

1) Нет. Автомобили, очевидно, принадлежат к вашей проблемной области, и вы должны рассматривать их как таковые и идентифицировать их. Вы также должны иметь функциональность, позволяющую извлекать все автомобили с определенным engine_id и так далее. Согласно тому, как вы заявляете проблему, это неоднозначно, если все 4 идентификатора определяют автомобиль.

2) Если я правильно понимаю ваш вопрос, да, идентификаторы являются важной частью дизайна REST. Это не означает, что вы не можете иметь функциональные возможности для отображения списков подчиненных объектов или даже поиска.

0

Сделайте сначала конструкцию действительной коробки передач, двигателя, кузова и колес. Затем попросите их передать либо идентификаторы, либо URL-адреса этим ресурсам при конструировании автомобиля.

Смежные вопросы