Как организовать REST API для сущности, разделенной по типу - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть следующая упрощенная структура моего API-ресурса под названием «Задача»:

Task:
  id: int
  type: enum
  status: enum
  input: json
  output: json

Вот форма полей ввода и вывода может отличаться, и это зависит от значения в столбце типа.

Т.е. на POST /tasks для разных значений столбца 'type', я ожидаю и проверяю разные значения для столбца 'input'.

Поскольку я не хочу, чтобы некоторые поля в теле запроса требовались только взависит от значения атрибута 'type'. Я хочу разделить запросы для каждого типа по URL.Что я имею в виду: например, для запроса type = 'type-a' будет 'POST / tasks / type-a' с собственными правилами проверки для запроса типа 'type-b' будет 'POST / tasks / type-b'с другими правилами проверки.

Проблема в том, что я не уверен, что это концептуально соответствует архитектуре REST, потому что тогда у меня будет несколько запросов' POST 'и только один запрос' GET 'для одного и того же ресурса.Решением этой проблемы является создание отдельных запросов «GET / tasks / {type}» для каждого типа.Таким образом, для клиента каждая задача со своим типом будет отдельным ресурсом.Но это также заставляет меня сомневаться, потому что внутренне это тот же ресурс с общими идентификаторами.

...