По моему мнению, вы должны использовать ту же "схему" для данных JSON, возвращаемых с конечных точек, которые вы даете в качестве примера, поскольку я ожидаю, что вызов API http://example.com/api/articles/2
можно использовать для получения одной статьи , тогда как http://example.com/api/articles
можно использовать для получения всех доступных статей , но представление данных article такое же.
Если вы хотите предоставить «компактное» представление сущностей статьи, например, используя только атрибуты id
и ref
, как в вашем первом представлении JSON, вы должны предоставить другую конечную точку API, например:
http://example.com/api/articles-refs
или http://example.com/api/articles/refs
Вы должны принять эту стратегию представления для любого подходящего глагола HTTP (например, GET, POST, PUT), в то время как глаголы, такие как DELETE, обычно требуют только id объекта для удаления, так как дополнительный объект атрибуты бесполезны для конкретной операции API.
Это приводит к последовательному и простому в использовании API, ИМХО.
В любом случае, вы всегда должны документировать свой API, чтобы предоставлять потребителям API информацию о доступных операциях, их семантике и JSON-схеме ввода / вывода данных.
Вы можете использовать Swagger / OpenAPI для документации API. Если вы используете Java для реализации своего API, я опубликовал статью об этом на DZone .