google translate api v2 - это ОТЛИЧНАЯ архитектура? - PullRequest
0 голосов
/ 12 июля 2011

Google переводчик API v2 в чистом стиле GET, и у них есть только один URL (или один ресурс ) в https://www.googleapis.com/language/translate/v2

так что в основном все варианты инструмента будут называться так https://www.googleapis.com/language/translate/v2?parameters

Они утверждают, что служба является RESTful (http://code.google.com/apis/language/translate/v2/using_rest.html), потому что она основана на простом URL-адресе GET.

Но, строго говоря, действительно ли это архитектура RESTful?

Поскольку наличие службы, основанной на простом URL-адресе GET, не является аналогом RESTful, верно?

Ответы [ 2 ]

1 голос
/ 12 июля 2011

Если вы хотите назвать его RESTful, он должен соответствовать критериям Филдинга

  • Клиент-сервер - отделяет пользовательский интерфейс от хранилища данных

  • Сервер без сохранения состояния - повышает надежность и масштабируемость

  • Клиентский кэш - уменьшает сетевой трафик

  • Унифицированный интерфейс - отделяет реализации от предоставляемых ими услуг

  • Многоуровневая система - означает, что каждый компонент касается только тех, которые находятся чуть ниже или чуть выше

  • Code-on-Demand - позволяет расширять функциональность клиента путем загрузки апплетов или скриптов

Также он должен иметь адресуемые ресурсы, ориентацию представления, самоописательные сообщения, сервер без сохранения состояния и возможность кэширования.

Так что, если API - это просто вызов GET с несколькими параметрами? Вопрос: является ли GET (с параметрами) идемпотентным и безопасным? Ну, я так думаю. Это интерфейс «только для чтения». Вы никогда не меняете состояние на сервере. Таким образом, GET безопасен, идемпотентен и кэшируется для заданных параметров запроса.

Это приятно для меня.

Теперь, когда люди используют GET для публикации материалов ... вот где вы должны возражать.

1 голос
/ 12 июля 2011

Лично я предоставлю любой сервис как REST, только если смогу смоделировать сервис как ресурсно-ориентированный, что в большинстве случаев означает представление данных как ресурсов.В случае API Google Translate, он дает больше ощущения RPC, чем ресурса, который он предоставляет.Следовательно, даже если Google может назвать его основанным на REST (так как он основан на простом GET URL), я бы не стал рассматривать его как основанный на REST сервис.Также, если вы посмотрите на URL-адрес, он не идентифицирует ресурс, скорее он выглядит как конечная точка, которой вы передаете значения в строке запроса и на основе этих значений вы получите результат.

...