Rest api - определение URL для данных иерархического уровня - PullRequest
0 голосов
/ 30 января 2020

У меня есть концепция учетной записи и субсчета.

Account
   |--->Subaccount1
            |----> Subaccount2
                       |---->Subaccount3
                             ....................... and so on
Account level rest url's:
POST - base_url/accounts
PUT - base_url/accounts
GET - base_url/accounts/$acc_name
DELETE - base_url/accounts/$acc_name
GET - base_url/accounts
Subaccount level rest url's - level 1
POST - base_url/accounts/$acc_name/subaccount
PUT - base_url/accounts/$acc_name/subaccount
GET - base_url/accounts/$acc_name/subaccount/$sub_acc
DELETE - base_url/accounts/$acc_name/subaccount/$sub_acc
GET - base_url/accounts/$acc_name/subaccount

Если уровень субсчета равен 1 или известен, я могу определить URL. Но так как я не знаю уровень иерархии, как я буду определять URL для суб-аккаунтов?

Для определения маршрутизаторов я использую фреймворк vertx.

Ответы [ 2 ]

1 голос
/ 30 января 2020

В документации к веб-модулю Vertx указано, что вы можете использовать регулярное выражение, чтобы определить, как будет выглядеть ваш URL . Самый простой способ - определить маршрут /accounts/{id}/subaccounts/{id}/*, который будет обрабатывать n-й уровень глубины

Однако, пока это возможно, Я настоятельно рекомендую вам не использовать этот шаблон . Это сделает ваши URL высоко вложенными и может доставить вам неприятности в будущем. Лучшим (и гораздо более простым) подходом будет считать субсчет гражданином первого класса, чтобы у вас было

  • /accounts/{id}/subaccounts/{id} для вложенных субсчетов "первого" уровня
  • /subaccounts/{id}/subaccounts/{id} для вложенных субсчетов уровня "n"

Или даже с учетом того, что субсчет является самой учетной записью, в этом случае вам не нужен второй URL

0 голосов
/ 30 января 2020

Откровенно? Я бы не стал делать это с помощью вложения, особенно если бы у вас была глубина n.

Просто сделайте уникальный идентификатор субсчетов, пригодных для использования в конечной точке /accounts.

В конце концов, субсчет является подмножеством аккаунта. Поэтому я думаю, что это довольно приемлемо.

Если вы действительно хотите разделить это, сделайте что-то вроде этого:

/accounts/{id}/subaccounts/{id}
...