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"
оказание услуг)