Как настроить конечные точки управления версиями на основе Rest API-URI в UI / UX без изменений кода? - PullRequest
0 голосов
/ 14 июля 2020

В моем приложении есть как пользовательский интерфейс, так и API.

Управление версиями REST API выглядит, как показано ниже, с использованием механизма управления версиями URI.

a) http://api.example.com/v1/products
b) http://api.example.com/v2/products

Примечание: api.example.com - это мой базовый URL, В моем контроллере есть @RequestMapping ("/ v1 / products")

My Angular UI / UX-приложение имеет ниже Create End-point, настроенный в файле конфигурации «prod-env. json», как показано ниже.

"prod-env.json" file :

{
    "apis": 
{
"createProduct": "https://api.example.com/v1/products/product"
}
}

Проблема в том, что каждый раз, когда есть версия API URI, мне приходилось go и вручную редактировать файл "prod-env- json" моего UI / UX и иметь на go для выпуска на стороне пользовательского интерфейса.

Есть ли способ избежать ручного изменения кода UI / UX? (Я имею в виду, есть ли способ настроить URI с помощью любого инструмента, например, просто вводя новую версию, например: v2, и он будет помещен в URI, как показано ниже)

https://api.example.com/{**new_version**}/products/product

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

Я использую такую ​​структуру в Angular, потому что в среде должны быть только константы, которые имеют глобальное влияние:

https://angular.io/guide/build

environment.prod.ts

export const environment = {
  production: true,
  apiHost: 'http://api.example.com',
  apiVersion: '1',
}

environment.test.ts

export const environment = {
  production: false,
  apiHost: 'http://api-test.example.com',
  apiVersion: '1',
}

apis.config.ts

import { environment } from './../environments/environment';

export const apis = {
  createProduct: `${environment.apiHost}/${environment.apiVersion}/products`,
  createUsers: `${environment.apiHost}/${environment.apiVersion}/users`,
}
0 голосов
/ 14 июля 2020

Это не совсем ответ на ваш вопрос, я просто хочу поделиться своим мнением.

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

Во-вторых, вы не хотите связывать версию API, которую использует Frontend, с Backend. В частности, новая версия API имеет высокий шанс сломать Frontend.

Итак, я бы сказал, вы захотите их разделить. И разделите базовый URL / версию с путем, не дублируйте их среди API.

Если вы действительно хотите реализовать автоматическое c управление версиями, просто создайте API, чтобы получить версию при загрузке страницы, затем сохранить эту версию в локальном / сессионном хранилище для дальнейшего использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...