amarao (amarao_san) wrote,
amarao
amarao_san

REST или не REST (scapi)

Всё-таки мы решили обойтись без PUT-запросов (если и реализовывать, то только для аплоада). В нашей концепции объектом уровня URL'а является сочетание глагола и типа (например, vm-query, или vdi-count, или vm-configure-vcpu), всё остальное является параметром.

Параметры для неизменяющих запросов передаются в GET'e:

/scapi/vm-query?i:owner=12&fields=uuid,self.name,rel.template,self.consumption.cpu_time&sort=-self.consuption.cpu_time

(пишу по памяти, могут быть опечатки).

Параметры изменяющих состояние запросов передаются в виде POST'а (тот же urlencoded). Нужно это по простой причине: посты гарантированно не перепосылаются без особых на то причин. Даже если с позиции REST'а всё ок, для нас совсем не ок, если запрос на vm-shutdown придёт дважды.

Ответ всегда возвращается в виде json'а, даже если это ошибка. HTTP-коды пришлось расширить (например, 460 - virtualization backend error), так как стандартных явно не хватало.
Tags: scapi
Subscribe

  • Rust soundness

    Каждый раз, когда я сталкиваюсь с маленькими "но" в Rust'е, это ощущение тщательной продуманности. Например, простейшие fold-функции для итераторов:…

  • still_ntp

    В ходе локального мозгового штурма у меня родилась суперидея. Надо написать ntp сервер, который может отдавать указанную дату. Т.е. сказали при…

  • arping'а не достаточно

    Я обнаружил, что arping не умеет делать целый запрос полностью (т.е. source mac, dest mac, source ip, dest ip). Dest либо IP, либо mac, и это немного…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments