Увеличьте значение поля ресурса в RESTful API на фиксированную величину, не зная его значения - PullRequest
0 голосов
/ 09 января 2019

Я работаю над API, который отвечает за управление долгосрочными заданиями. Вы создаете рабочие места, публикуя на

/jobs/

, который дает вам объект с полем прогресса, например

{"progress_percentage": 0.0, "id": 1}

Затем вы можете внести изменения в экземпляр этого задания, установив

/jobs/<job-id>/

Во время выполнения заданий я хочу нажать на API, чтобы увеличить прогресс по мере выполнения задания, начиная с 0.0 и заканчивая 100.0. Любая заданная задача может быть разбита на более мелкие задачи, эти задачи могут выполняться одновременно, и им могут быть назначены «чанки» выполнения. Я хочу, чтобы каждый кусок увеличивал прогресс относительно назначенного ему прогресса. Например, если задача 1 выполняется и ей назначен блок прогресса 30%, и в этой задаче размера 5 есть цикл for, я бы хотел увеличить процент выполнения на 6% для каждой итерации цикла for, независимо от каков текущий процент прогресса.

Другие задания могут просто захотеть установить процент (не увеличивая его)

Мой вопрос заключается в том, что было бы наиболее желательным способом сделать это с точки зрения разработки API.

Я вижу несколько вариантов

1

PATCH /jobs/<job-id>/

с полезной нагрузкой

{"progress_percentage": {"increase": 6.0}}

увеличить

или

{"progress_percentage": {"set": 35.0}}

установить.

2

POST /jobs/<job-id>/progress_percentage/

с полезной нагрузкой

{"amount" 6.0} or [6.0]

увеличить или

PATCH /jobs/<job-id>/

с полезной нагрузкой

{"progress_percentage" 30.0}

установить.

1 Ответ

0 голосов
/ 09 января 2019

Предполагая, что ваш REST API не является общедоступным, я считаю вариант 1 более благоприятным.

Поскольку 'progress_percentage' является свойством объекта 'job', я не вижу необходимости вводить подресурс (т.е. / progress_percentage ).

Кроме того, если вы хотите выполнить PATCH для нескольких атрибутов 'job', вы захотите сделать это как часть одного запроса и полезной нагрузки, а не запускать несколько запросов PATCH. Для этого имеет смысл использовать ' PATCH / jobs / {job-id} / '.

...