2014-11-24 5 views
1

Я работаю над приложением низкой латентностью для телекоммуникационной отрасли, где основной рабочий процесс запускается вычисление следующим образом:Вы нарушили бы принцип идемпотентности REST ради производительности?

  1. вызов Отдыхают API (POST/рабочий процесс + полезная нагрузка)
  2. REST веб-приложение будет выполнять весьма распараллеливание обработки в хранилище кэша быстрого доступа
  3. остальные вызов возвращает ответ (может быть JSON объект из 4 или 5 полей)

Теперь моя первоначальная идея придерживаясь принципов проектирования REST, чтобы сделать 2 API REST API, на что POSTS инициирует обработку, затем возвращает 201 с расположением результата обработки в заголовке (поскольку мое понимание - вызовы REST могут либо изменять, либо возвращать ресурс, но не оба), а затем автоматически перенаправляет вызов GET.

Теперь помните, что я стараюсь как можно меньше уменьшить латентность, и HTTP-перенаправления явно увеличивают это. Это нормально, если я делаю свой POST возвратом полезной нагрузки вместо перенаправления на GET? Каковы последствия?

Приветствия,

ответ

2

Во-первых, POST не является методом идемпотентная для начала, так что это не представляется возможным для POST не «нарушать идемпотентность.»

Во-вторых, нет причин, по которым POST не может вернуть представление вновь созданного ресурса. Фактически, согласно RFC7231 (одна из новых замен для RFC2616), его можно даже кэшировать для последующих GETS. Смотрите раздел 4.3.3:

В тех случаях, когда сервер происхождения желает клиент, чтобы иметь возможность кэшировать на результат выполнения процедуры POST способом, который может быть использован позже GET, сервер происхождения может отправьте ответ 200 (OK), содержащий результат, и поле Content-Location ...

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

  • Нет связанных вопросов^_^