API на стороне администратора и клиента в облачных конечных точках Java

Я собираюсь сделать API для книги, где пользователь может получить данные об этой книге. Этот API-интерфейс состоит из двух частей: одна - со стороны администратора, другая - со стороны клиента.

Только администратор может добавлять, обновлять или удалять данные.
Пользователь может только получить доступ (прочитать) данные.

Я использую Google Cloud Endpoints для этого. Но в облачных конечных точках весь метод виден пользователям. Я знаю, что могу ограничить некоторые методы, но даже ограниченный метод также отображается в API Explorer и Client Library. Я не хочу показывать эти методы только в проводнике API. Администратор может видеть эти методы в проводнике API и библиотеках.

Как я могу это сделать? Могу ли я создать два разных API, один для администратора и второй для клиента? Создание двух разных проектов дублирует большую часть кода.

Есть ли шаблон дизайна для такой ситуации?

Любое предложение, что мне нужно сделать.

1 ответ

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

Однако в одном проекте GCP можно использовать несколько API-интерфейсов конечных точек (используя gcloud endpoints services deploy, со спецификациями API, которые имеют разные имена хостов).

Тем не менее, если вы используете Endpoints Frameworks (из тега вашего вопроса), у вас есть хитрые ограничения для работы: один проект GCP может иметь не более одного приложения App Engine ([your-project-id].appspot.com). Так что делать?

Если вы хотите разместить API администратора в другом поддомене, вы можете использовать "сервисы" App Engine (ранее называвшиеся "модулями"). Это позволяет развертывать приложения в таких доменах, как [modulename]-dot-[your-project-id].appspot.com, Вы можете загрузить различные спецификации API конечных точек для каждого из этих имен хостов.

Это должно позволить вам сделать что-то вроде:

  • API администратора: [admin]-dot-[your-project-id].appspot.com
  • Пользовательский API: [user]-dot-[your-project-id].appspot.com, или просто [your-project-id].appspot.com ("default" оказание услуг)
Другие вопросы по тегам