Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
W tej sekcji opisaliśmy, jak używać interfejsu Edge API do tworzenia usług API przeznaczonych do publikacji w portalach dla programistów.
Tworzenie usług API za pomocą interfejsu API
produkty API, które umożliwiają programistom rejestrację aplikacje korzystające z interfejsów API za pomocą kluczy API i tokenów dostępu OAuth. Usługi API są zaprojektowane umożliwiają grupowanie API, a następnie opublikować te pakiety w różnych grupach dla programistów. Możesz na przykład chcieć udostępnić partnerowi jeden zestaw zasobów interfejsów API a następnie publikujesz kolejny pakiet dla zewnętrznych programistów. Usługi API umożliwiają możesz łączyć te pakiety na bieżąco bez konieczności wprowadzania zmian w samych interfejsach API. An Dodatkową zaletą jest możliwość przejścia na wyższą wersję i zmienionym na niższą wersję bez konieczności do uzyskiwania nowych kluczy dla użytkowników aplikacji.
Aby utworzyć usługę API za pomocą interfejsu API, wyślij żądanie POST do
/organizations/{org_name}/apiproducts
Więcej informacji znajdziesz w dokumentacji dotyczącej tworzenia usługi API.
To żądanie tworzy usługę API o nazwie weather_free
. Usługa API
zapewnia dostęp do wszystkich interfejsów API udostępnianych przez serwer proxy weatherapi
API, który jest
wdrożono w środowisku test
. Typ zatwierdzenia jest ustawiony na auto
, co oznacza, że każdy
prośba o dostęp zostanie zatwierdzona.
curl -X POST https://api.enterprise.apigee.com/v1/organization/myorg/apiproducts \ -H "Content-Type:application/json" \ -d \ '{ "approvalType": "auto", "displayName": "Free API Product", "name": "weather_free", "proxies": [ "weatherapi" ], "environments": [ "test" ] }' \ -u email:password
Przykładowa odpowiedź:
{ "apiResources" : [ ], "approvalType" : "auto", "attributes" : [ ], "createdAt" : 1362759663145, "createdBy" : "developer@apigee.com", "displayName" : "Free API Product", "environments" : [ "test" ], "lastModifiedAt" : 1362759663145, "lastModifiedBy" : "developer@apigee.com", "name" : "weather_free", "proxies" : [ "weatherapi" ], "scopes" : [ ] }
Stworzona powyżej usługa API implementuje najbardziej podstawowy scenariusz, autoryzując żądania wysyłane Serwer proxy interfejsu API w środowisku. Definiuje usługę API, która umożliwia autoryzowaną aplikację dostęp wszystkie zasoby API, do których dostęp uzyskuje się przez serwer proxy interfejsu API działający w środowisku testowym. Usługi API Udostępnienie dodatkowych ustawień konfiguracji, które umożliwiają dostosowanie kontroli dostępu do interfejsów API dla różnych grup deweloperów. Można na przykład utworzyć 2 usługi API, które zapewniają dostęp do różnych serwerów proxy interfejsów API. Można również utworzyć dwa produkty API, które dają dostęp do tego samego Serwery proxy interfejsu API, ale z innymi powiązanymi ustawieniami limitów.
Ustawienia konfiguracji usługi API
Usługi API udostępniają te opcje konfiguracji:
Nazwa | Opis | Domyślny | Wymagana? |
---|---|---|---|
apiResources |
Rozdzielona przecinkami lista identyfikatorów URI lub ścieżek zasobów „w pakiecie” w interfejsie API usługi. Domyślnie ścieżki zasobów są mapowane z Możesz wybrać konkretną ścieżkę lub wszystkie ścieżki podrzędne, używając symbolu wieloznacznego.
Obsługiwane są symbole wieloznaczne (/** i /*). Symbol wieloznaczny z podwójną gwiazdką oznacza, że wszystkie
podrzędne identyfikatory URI. Pojedyncza gwiazdka oznacza, że tylko identyfikatory URI o jednym poziomie poniżej
dołączono. |
Nie dotyczy | Nie |
approvalType |
Określa, w jaki sposób klucze interfejsu API są zatwierdzane w celu uzyskania dostępu do interfejsów API zdefiniowanych przez daną usługę API. Jeśli
ustawiona na manual , klucz generowany dla aplikacji jest w stanie „oczekujący” stanu.
Takie klucze nie będą działać, dopóki nie zostaną wyraźnie zatwierdzone. Jeśli ma wartość auto ,
Wszystkie klucze są generowane w sekcji „Zatwierdzone” i pracować od razu. (auto to
zwykle używane do zapewnienia dostępu do bezpłatnych/próbnych usług API z ograniczonymi limitami
lub możliwości). |
Nie dotyczy | Tak |
attributes |
Tablica atrybutów, których można używać do rozszerzenia domyślnego profilu usługi API o metadanych dla konkretnego klienta.
Za pomocą tej właściwości możesz określić poziom dostępu do usługi API jako publiczny, prywatny lub wewnętrzny. Na przykład:
"atrybuty": [
{
"name": "dostęp",
"value": "public"
}
{
"name": "foo","value": "foo" }, { "name": "bar", "value": "bar" }
]
|
Nie dotyczy | Nie |
scopes |
Rozdzielona przecinkami lista zakresów protokołu OAuth, które są weryfikowane w czasie działania. (Apigee Edge sprawdza, czy zakresy w dowolnym przedstawionym tokenie dostępu pasują do zakresu ustawionego w interfejsie API product.) | Nie dotyczy | Nie |
proxies |
Nazwane serwery proxy interfejsu API, z którymi powiązana jest ta usługa API. Dzięki określeniu serwerów proxy można wiąże zasoby usługi API z określonymi serwerami proxy interfejsu API, uniemożliwiając programistom dostępu do tych zasobów za pośrednictwem innych serwerów proxy interfejsów API. | Nie dotyczy | Nie. Jeśli nie zdefiniowano, atrybut apiResources musi być wyraźnie zdefiniowany (zobacz informacje
dla kolumny apiResources powyżej) i zmiennej flow.resource.name ustawionej w
Zasada AssignMessage. |
environments |
Nazwane środowiska (na przykład „test” lub „prod”), z którymi powiązana jest ta usługa API. Określając co najmniej 1 środowisko, możesz powiązać zasoby wymienione w usłudze API do określonego środowiska, uniemożliwiając deweloperom dostęp do tych zasobów za pomocą interfejsu API. serwerów proxy w innym środowisku. To ustawienie jest używane na przykład do zapobiegania zasobom powiązane z serwerami proxy API w „prod” dostęp do serwerów proxy API wdrożonych w „test”. | Nie dotyczy | Nie. Jeśli nie zdefiniowano, atrybut apiResources musi być wyraźnie zdefiniowany.
Zmienna flow.resource.name ustawiona w zasadzie AssignMessage. |
quota |
Liczba dozwolonych żądań na aplikację w określonym przedziale czasu. | Nie dotyczy | Nie |
quotaInterval |
Liczba jednostek czasu, w których oceniane są limity | Nie dotyczy | Nie |
quotaTimeUnit |
Jednostka czasu (minuta, godzina, dzień lub miesiąc), w której liczone są limity. | Nie dotyczy | Nie |
Poniżej znajdziesz bardziej szczegółowy przykład tworzenia usługi API.
curl -X POST https://api.enterprise.apigee.com/v1/o/{org_name}/apiproducts \ -H "Content-Type:application/json" -d \ '{ "apiResources": [ "/forecastrss" ], "approvalType": "auto", "attributes": [ {"name": "access", "value": "public"} ], "description": "Free API Product", "displayName": "Free API Product", "name": "weather_free", "scopes": [], "proxies": [ "weatherapi" ], "environments": [ "test" ], "quota": "10", "quotaInterval": "2", "quotaTimeUnit": "hour" }' \ -u email:password
Przykładowa odpowiedź
{ "apiResources" : [ "/forecastrss" ], "approvalType" : "auto", "attributes" : [ { "name" : "access", "value" : "public" }, "createdAt" : 1344454200828, "createdBy" : "admin@apigee.com", "description" : "Free API Product", "displayName" : "Free API Product", "lastModifiedAt" : 1344454200828, "lastModifiedBy" : "admin@apigee.com", "name" : "weather_free", "scopes" : [ ], "proxies": [ {'weatherapi'} ], "environments": [ {'test'} ], "quota": "10", "quotaInterval": "1", "quotaTimeUnit": "hour"}' }
Informacje o zakresach
Zakres to pojęcie pobrane z protokołu OAuth i mapowane w przybliżeniu do koncepcji „uprawnień”. Wł. Apigee Edge, zakresy są całkowicie opcjonalne. Aby uzyskać bardziej szczegółowe informacje, możesz używać zakresów autoryzacji. Każdy klucz klienta wydany do aplikacji jest powiązany z zakresem nadrzędnym. zakres główny to zbiór wszystkich zakresów we wszystkich usługach API dla tej aplikacji, która została zatwierdzona. Dla: aplikacji zatwierdzonych do korzystania z wielu usług API, zakres główny to połączenie wszystkich zakresów zdefiniowane w usługach API, dla których klucz klienta został zatwierdzony.
Wyświetl usługi API
Aby wyświetlić usługi API utworzone dla organizacji za pomocą interfejsu API, zapoznaj się z tymi sekcjami:
- Wyświetlanie usług API (zarabianie)
Domyślnie wyświetlane są tylko produkty API generujące przychody (tj. usługi API mające co najmniej 1 opublikowany plan stawek). Aby wyświetlać wszystkie produkty interfejsu API, ustaw parametr zapytania
monetized
nafalse
. Jest to równoważne z wysłaniem żądania GET do interfejsu API list produktów, który nie generuje przychodów:https://api.enterprise.apigee.com/v1/organizations/{org_name}/apiproducts?expand=true
- Wyświetl usługi API (niezarabiające)
- Wyświetlanie odpowiednich usług API dla dewelopera
- Wyświetlanie odpowiednich usług API dla firmy
Poniżej znajdziesz przykład wyświetlania produktów API za pomocą interfejsu API:
curl -X GET "https://ext.apiexchange.org/v1/mint/organizations/{org_name}/products?monetized=true" \ -H "Accept:application/json" \ -u email:password
Odpowiedź powinna wyglądać mniej więcej tak (widoczna jest tylko jej część):
{ "product" : [ { "customAtt1Name" : "user", "customAtt2Name" : "response size", "customAtt3Name" : "content-length", "description" : "payment api product", "displayName" : "payment", "id" : "payment", "name" : "payment", "organization" : { ... }, "pricePoints" : [ ], "status" : "CREATED", "transactionSuccessCriteria" : "status == 'SUCCESS'" }, { "customAtt1Name" : "user", "customAtt2Name" : "response size", "customAtt3Name" : "content-length", "description" : "messaging api product", "displayName" : "messaging", "id" : "messaging", "name" : "messaging", "organization" : ... }, "pricePoints" : [ ], "status" : "CREATED", "transactionSuccessCriteria" : "status == 'SUCCESS'" } ], "totalRecords" : 2 }
Rejestrowanie deweloperów przy użyciu interfejsu API
Wszystkie aplikacje należą do deweloperów lub firm. Dlatego, aby utworzyć aplikację, w celu zarejestrowania dewelopera lub firmy.
Deweloperzy są zarejestrowani w organizacji przez utworzenie profilu. Pamiętaj, że deweloper adres e-mail w profilu jest używany jako unikalny klucz dewelopera Apigee Edge
Aby móc korzystać z funkcji zarabiania, musisz zdefiniować funkcję zarabiania . Możesz też określić inne dowolne atrybuty do wykorzystania w statystykach niestandardowych, egzekwowaniu zasad niestandardowych itp.; te arbitralne Apigee Edge nie będzie interpretować atrybutów,
Na przykład poniższe żądanie rejestruje profil dewelopera, którego adres e-mail to
ntesla@theremin.com
i określa podzbiór przychodów
za pomocą interfejsu Create Developer API:
$ curl -H "Content-type:application/json" -X POST -d \ '{"email" : "ntesla@theremin.com", "firstName" : "Nikola", "lastName" : "Tesla", "userName" : "theremin", "attributes" : [ { "name" : "project_type", "value" : "public" }, { "name": "MINT_BILLING_TYPE", "value": "POSTPAID" }, { "name": "MINT_DEVELOPER_ADDRESS", "value": "{\"address1\":\"Dev One Address\",\"city\":\"Pleasanton\",\"country\":\"US\",\"isPrimary\":true,\"state\":\"CA\",\"zip\":\"94588\"}" }, { "name": "MINT_DEVELOPER_TYPE", "value": "TRUSTED" }, { "name": "MINT_HAS_SELF_BILLING, "value": "FALSE" }, { "name" : "MINT_SUPPORTED_CURRENCY", "value" : "usd" } ] }' \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers \ -u email:password
Przykładowa odpowiedź
{ "email" : "ntesla@theremin.com", "firstName" : "Nikola", "lastName" : "Tesla", "userName" : "theremin", "organizationName" : "{org_name}", "status" : "active", "attributes" : [ { "name" : "project_type", "value" : "public" }, { "name": "MINT_BILLING_TYPE", "value": "POSTPAID" }, { "name": "MINT_DEVELOPER_ADDRESS", "value": "{\"address1\":\"Dev One Address\",\"city\":\"Pleasanton\",\"country\":\"US\",\"isPrimary\":true,\"state\":\"CA\",\"zip\":\"94588\"}" }, { "name": "MINT_DEVELOPER_TYPE", "value": "TRUSTED" }, { "name": "MINT_HAS_SELF_BILLING, "value": "FALSE" }, { "name" : "MINT_SUPPORTED_CURRENCY", "value" : "usd" } ], "createdAt" : 1343189787717, "createdBy" : "admin@apigee.com", "lastModifiedAt" : 1343189787717, "lastModifiedBy" : "admin@apigee.com" }
Rejestrowanie aplikacji deweloperów przy użyciu interfejsu API
Każda aplikacja zarejestrowana w Apigee Edge jest powiązana z programistą i usługą API. Gdy aplikacja zostanie zarejestrowana w imieniu dewelopera, Apigee Edge generuje „dane logowania” (A klucz klienta i hasło), który identyfikuje aplikację. Aplikacja musi następnie przekazać te dane logowania jako część każdego żądania do usługi API powiązanej z aplikacją.
To żądanie używa przycisk Utwórz API Developer App do zarejestrowania aplikacji dla utworzonego przez Ciebie dewelopera: ntesla@theremin.com. Podczas rejestrowania aplikacji definiujesz jej nazwę, callbackUrl i listę co najmniej 1 interfejsu API. produkty:$ curl -H "Content-type:application/json" -X POST -d \ '{ "apiProducts": [ "weather_free"], "callbackUrl" : "login.weatherapp.com", "keyExpiresIn" : "2630000000", "name" : "weatherapp"}' \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps \ -u email:password
Metodę callbackUrl używają:
niektórych typów uwierzytelnień OAuth (takich jak kod autoryzacji) do weryfikowania żądań przekierowania z aplikacji.
Jeśli używasz protokołu OAuth, musisz ustawić tę wartość na taką samą wartość jak redirect_uri
.
używane do wysyłania żądań OAuth.
Atrybut keyExpiresIn
określa (w milisekundach) cały okres
klucz klienta, który zostanie wygenerowany dla aplikacji dewelopera. Wartość domyślna (-1) oznacza
nieskończonego okresu ważności.
Przykładowa odpowiedź
{ "appId": "5760d130-528f-4388-8c6f-65a6b3042bd1", "attributes": [ { "name": "DisplayName", "value": "Test Key Expires" }, { "name": "Notes", "value": "Just testing this attribute" } ], "createdAt": 1421770824390, "createdBy": "wwitman@apigee.com", "credentials": [ { "apiProducts": [ { "apiproduct": "ProductNoResources", "status": "approved" } ], "attributes": [], "consumerKey": "jcAFDcfwImkJ19A5gTsZRzfBItlqohBt", "consumerSecret": "AX7lGGIRJs6s8J8y", "expiresAt": 1424400824401, "issuedAt": 1421770824401, "scopes": [], "status": "approved" } ], "developerId": "e4Oy8ddTo3p1BFhs", "lastModifiedAt": 1421770824390, "lastModifiedBy": "wwitman@apigee.com", "name": "TestKeyExpires", "scopes": [], "status": "approved" }
Zarządzanie kluczami klienta dla aplikacji przy użyciu interfejsu API
Uzyskiwanie klucza klienta (klucz interfejsu API) aplikacji.
Dane uwierzytelniające aplikacji (usługa interfejsu API, klucz klienta i tajny klucz) są zwracane w ramach profil aplikacji. Administrator organizacji może pobrać klucz klienta w dowolnym momencie.
Profil aplikacji wyświetla wartość klucza i tajnego klucza klienta oraz stan konsumenta a także powiązania usługi API z tym kluczem. Jako administrator możesz pobrać profilu klienta w dowolnym momencie, korzystając z narzędzia Get Key Details for a Developer App” Interfejs API:
$ curl -X GET -H "Accept: application/json" \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps/weatherapp/keys/HQg0nCZ54adKobpqEJaE8FefGkdKFc2J \ -u email:password
Przykładowa odpowiedź
{ "apiProducts" : [ { "apiproduct" : "weather_free", "status" : "approved" } ], "attributes" : [ ], "consumerKey" : "HQg0nCZ54adKobpqEJaE8FefGkdKFc2J", "consumerSecret" : "1eluIIdWG3JGDjE0", "status" : "approved" }
Zobacz Dowiedz się więcej o kluczowych informacjach o aplikacji dewelopera.
Dodaj usługę API do aplikacja i klucz
Aby zaktualizować aplikację w celu dodania nowego interfejsu API, musisz dodać tę usługę do klucza aplikacji za pomocą interfejsu Add API Product to Key API. Zobacz Dodaj usługę API do klucza, aby uzyskać więcej informacji.
Dodanie usługi API do klucza aplikacji umożliwia aplikacji, która ma ten klucz, dostęp do interfejsu API zasobów powiązanych z usługą API. Poniższe wywołanie metody dodaje nowy produkt API do aplikacja:
$ curl -H "Content-type:application/json" -X POST -d \ '{ "apiProducts": [ "newAPIProduct"] }' \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps/weatherapp/keys/HQg0nCZ54adKobpqEJaE8FefGkdKFc2J \ -u email:password
Przykładowa odpowiedź:
{ "apiProducts": [ { "apiproduct": "weather_free", "status": "approved" }, { "apiproduct": "newAPIProduct", "status": "approved" } ], "attributes": [], "consumerKey": "HQg0nCZ54adKobpqEJaE8FefGkdKFc2J", "consumerSecret": "1eluIIdWG3JGDjE0", "expiresAt": -1, "issuedAt": 1411491156464, "scopes": [], "status": "approved" }
Zatwierdź klucze klienta
Ustawienie typu zatwierdzenia na ręczne pozwala kontrolować, które
programiści mają dostęp do zasobów chronionych przez usługi API. Gdy usługi API mają klucz
ma wartość manual
, klucze klienta muszą być bezpośrednio zatwierdzone. Kluczami mogą być
jawnie zatwierdzone przy użyciu opcji Zatwierdź lub unieważnij konkretny klucz aplikacji dewelopera.
Interfejs API:
$ curl -X POST -H "Content-type:appilcation/octet-stream" \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps/weatherapp/keys/HQg0nCZ54adKobpqEJaE8FefGkdKFc2J?"action=approve" \ -u email:password
Przykładowa odpowiedź
{ "apiProducts" : [ { "apiproduct" : "weather_free", "status" : "approved" } ], "attributes" : [ ], "consumerKey" : "HQg0nCZ54adKobpqEJaE8FefGkdKFc2J", "consumerSecret" : "1eluIIdWG3JGDjE0", "status" : "approved" }
Zobacz Zatwierdź lub unieważnij konkretny klucz aplikacji dewelopera.
Zatwierdź usługi API dla kluczy konsumentów
Powiązanie usługi API z kluczem klienta również ma stan. Aby dostęp do interfejsu API był klucz klienta musi zostać zatwierdzony oraz zatwierdzony klucz klienta odpowiednią usługę API. Powiązanie klucza klienta z usługą interfejsu API może być zatwierdzone przy użyciu opcji Approve or Unsubscribe API Product for a Key for a Developer". Interfejs APIaplikacji:
$ curl -X POST -H "Content-type:application/octet-stream" \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps/weatherapp/keys/HQg0nCZ54adKobpqEJaE8FefGkdKFc2J/apiproducts/weather_free?"action=approve" \ -u email:password
To polecenie cURL nie zwraca odpowiedzi. Zobacz Zatwierdź lub unieważnij usługę API dla klucza aplikacji związanej z deweloperem, aby dowiedzieć się więcej.
Unieważnij usługi API dla klucze konsumenta
Jest wiele powodów, dla których unieważnienie powiązania klucza klienta z interfejsem API może wymagać unieważnienia usługi. Konieczne może być usunięcie usługi API z klucza klienta ze względu na brak płatności do dewelopera, wygasł okres próbny lub gdy aplikacja jest proponowana z jednego produktu API innego użytkownika.
Aby unieważnić powiązanie klucza klienta z usługą API, użyj opcji Zatwierdź lub Unieważnij określony klucz aplikacji programisty API, używając unieważnienia działania wobec argumentu klucz klienta deweloperskiej aplikacji:
$ curl -X POST -H "Content-type:application/octet-stream" \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps/weatherapp/keys/HQg0nCZ54adKobpqEJaE8FefGkdKFc2J/apiproducts/weather_free?"action=revoke" \ -u email:password
To polecenie cURL nie zwraca odpowiedzi. Zobacz Zatwierdź lub unieważnij konkretny klucz aplikacji dewelopera.
Wymuszanie ustawień usługi API
Aby usługi API były egzekwowane, do interfejsu API musi być dołączony jeden z tych typów zasad przepływ serwera proxy:
- VerifyAPIKey: pobiera odwołanie do klucza interfejsu API, sprawdza, czy reprezentuje on prawidłową aplikację. pasuje do usługi API. Zapoznaj się z artykułem Weryfikacja zasad kluczy interfejsu API dla platformy i innych.
- OAuthV1, operacja „VerifyAccessToken”: weryfikowanie podpisu, weryfikuje Token dostępu OAuth 1.0a i „klucz klienta” oraz dopasowuje aplikację do usługi interfejsu API. Zapoznaj się z zasadami protokołu OAuth 1.0a na temat: i innych.
- OAuthV2, operacja „VerifyAccessToken”: sprawdza, czy dostęp OAuth 2.0 token jest prawidłowy, dopasowuje token do aplikacji, sprawdza poprawność aplikacji, a następnie dopasowuje z aplikacji do usługi API. Więcej informacji: OAuth do domu.
Po skonfigurowaniu zasad i usług API Apigee wykonuje następujący proces: Brzeg:
- Apigee Edge odbiera żądanie i kieruje je do odpowiedniego serwera proxy interfejsu API.
- Wykonywana jest zasada weryfikująca klucz interfejsu API lub token dostępu OAuth przedstawiany przez klienta.
- Edge identyfikuje klucz interfejsu API lub token dostępu z profilem aplikacji.
- Edge przeszukuje listę (jeśli występują) usług API powiązanych z aplikacją.
- Pierwsza pasująca usługa API jest używana do wypełniania zmiennych limitów.
- Jeśli żadna usługa API nie pasuje do klucza interfejsu API lub tokena dostępu, żądanie zostanie odrzucone.
- Edge wymusza kontrolę dostępu na podstawie identyfikatora URI (środowisko, serwer proxy interfejsu API i ścieżkę URI) na podstawie Ustawienia usługi API, wraz z ustawieniami limitów.