Considerare il seguente esempio (comune nelle applicazioni SaaS):
Questo è un SaaS che si occupa di Widget.
- Hai un account, che ti autentichi tramite una chiave API. Ogni chiave API autentica solo un account.
- Hai diversi widget sotto il tuo account. Un widget appartiene a un solo account e non può essere trasferito ad altri account.
La rappresentazione URL di un widget può essere:
-
https://api.domain.com/v0/accounts/{accountId}/widgets/{widgetId}
-
https://api.domain.com/v0/widgets/{widgetId}
La differenza è che la rotta 1 ha l'accountId esplicito e la rotta 2 la ha implicita (nell'autenticazione tramite la chiave API).
Esempi
In natura sembrano esserci esempi per entrambe le alternative:
Ad esempio, Twilio API rende esplicito l'accountId. Per effettuare una chiamata in uscita:
curl -X POST https://api.twilio.com/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXX/Calls.json \
--data-urlencode "Url=http://demo.twilio.com/docs/voice.xml" \
--data-urlencode "From=+15010000000" \
--data-urlencode "To=+12300000000" \
-u ACXXXXXXXXXXXXXXXXXXX:your_auth_token
e API stripe ha l'accountId implicito. Ad esempio, per ritirare il saldo:
curl https://api.stripe.com/v1/balance \
-u sk_test_BQokikJOvBiI2HlWgH4olfQ2:
Quali sono i compromessi con entrambe le alternative (esplicite e implicite)?