Вопрос или проблема
Tensorflow REST URL-адреса выглядят так: http://host:port/v1/models/${MODEL_NAME}[/versions/${VERSION}|/labels/${LABEL}]:predict
Где URL заканчивается на “:predict”, а не на “:1000” — число/порт, как я бы ожидал. Почему это работает? Есть ли другие примерные URL-адреса, которые используют эту схему со словом вместо числа? Мне трудно найти информацию об этой концепции в гугле, поэтому было бы здорово, если бы stackoverflow указал мне на термин, который я пропускаю.
URL-адреса не оканчиваются на порт. Если есть нестандартный порт, этот порт появляется сразу после хоста (домена), но перед путем.
Часть :predict
вашего URL-адреса — это просто часть ‘пути’ URL. У нее нет специального значения для URL в общем, но она может иметь специальное значение для конкретного API, с которым вы работаете.
Ответ или решение
REST API – ":word" (например, ":predict") против ":port" (например, ":1000") – это важная тема, которая требует детального анализа. Давайте разберем, в чем состоит разница, и почему в некоторых случаях используется окончание, состоящее из слова, а не номера порта.
Что такое REST API?
REST (Representational State Transfer) – это архитектурный стиль, который устанавливает набор принципов для создания веб-сервисов. Он использует стандартные HTTP методы, такие как GET, POST, PUT и DELETE, чтобы управлять ресурсами, представленными в виде URL. Все компоненты RESTful API взаимодействуют через эти ресурсы, которые обычно представляются в формате JSON.
Структура URL
Каждый URL обычно состоит из следующих компонентов:
- Протокол (например, HTTP или HTTPS)
- Хост (имя сервера или IP-адрес)
- Порт (необязательный, например, 1000)
- Путь (указывает на ресурс)
- Запрос (например, параметры, передаваемые после знака вопроса)
Различие между ":word" и ":port"
-
":port" – это стандартный компонент URL, который указывает на специфический порт, используемый сервером для обработки запросов. Обычно, если порт не указан, используется стандартный порт HTTP (80) или HTTPS (443). Например, URL
http://example.com:1000
указывает на сервер, прослушивающий порт 1000. -
":word" – это составная часть пути в URL и, как правило, обозначает определенный метод или действие, связанный с API. В вашем примере
:predict
указывает на специфическую операцию, которую вы хотите выполнить, например, предсказание на основе модели машинного обучения в TensorFlow. Это просто соглашение, принятие словами для обозначения различных операций API.
Почему это работает?
Конструкция с суффиксом :word
не является стандартом URL, но между разработчиками API существует стройная практика, которая позволяет использовать такие конструкции для улучшения читаемости и понимания конечных точек. Например, в REST API для обработки запросов могут использоваться такие операции, как :create
, :update
, :delete
и т.д. Это позволяет четко разделять различные действия и упрощает работу с API.
Другие примеры
Другие API также могут использовать аналогичные схемы:
- GraphQL: путь может содержать запрос на определенные поля.
- OpenAPI: документация может включать в себя такие конструкции для указания доступных операций над ресурсами.
Заключение
Использование суффиксов формата :word
в URL API – это часть удобных соглашений. Особенно это полезно в проектировании API, позволяя разработчикам быстро и интуитивно определять доступные действия. Понимание этой концепции может помочь вам лучше работать с RESTful сервисами и различными API-интерфейсами.