Zmień pisownię odpowiedzi na wielkie litery za pomocą objaśnienia Java

Wyświetlasz dokumentację Apigee Edge.
Przejdź do dokumentacji Apigee X.
info

Jeśli po raz pierwszy korzystasz z wywołania Java, zalecamy rozpoczęcie od artykułu Jak utworzyć wywołanie Java callout.

Ten przykład z przewodnika pokazuje, jak utworzyć prostą zasadę JavaCallout, która wykonuje niestandardowy kod Java w kontekście przepływu proxy.

Co robi przykładowy kod?

Proxy interfejsu API w tym przykładzie wywołuje usługę docelową, która zwraca prostą odpowiedź JSON. Zasada Java Callout jest umieszczona w przepływie odpowiedzi docelowej. Kod Java konwertuje nagłówki i treść odpowiedzi na wielkie litery. To prosty przykład, ale pokazuje, jak uruchomić niestandardowy kod Java w kontekście proxy interfejsu API w Edge.

Wypróbuj przykład

Pobierz projekt

Aby uprościć sprawę, możesz pobrać ten projekt z repozytorium Apigee api-platform-samples w GitHub.

  1. Pobierz lub sklonuj repozytorium api-platform-samples na swój komputer.
  2. W terminalu lub edytorze kodu wybierz projekt api-platform-samples/doc-samples/java-cookbook.

Skompiluj kod za pomocą Maven

Projekt jest skonfigurowany tak, aby można go było skompilować za pomocą Maven. Jeśli chcesz użyć javac, po przykładzie Maven podamy też przykład.

  1. Upewnij się, że masz zainstalowany program Maven:
    mvn -version
  2. Uruchom skrypt java-cookbook/buildsetup.sh. Ten skrypt instaluje wymagane zależności JAR w lokalnym repozytorium Maven.
  3. Przejdź do katalogu java-cookbool/callout.
  4. Uruchom Maven:
    mvn clean package
  5. Jeśli chcesz, sprawdź, czy plik JAR edge-custom-policy-java-cookbook.jar został skopiowany do java-cookbook/apiproxy/resources/java. Jest to wymagana lokalizacja dla plików JAR, które chcesz wdrożyć za pomocą proxy.

Kompilowanie za pomocą javac

Jeśli chcesz skompilować kod za pomocą javac, możesz zrobić coś podobnego do tego (z katalogu java-cookbook). Wymagane pliki JAR są dostępne w katalogu java-cookbook/lib.

  1. Przejdź do katalogu api-platform-samples/doc-samples/java-cookbook.
  2. Upewnij się, że masz javac w ścieżce.

    javac -version
  3. Uruchom to polecenie javac:

    javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/ResponseUppercase.java
  4. Skopiuj plik JAR do katalogu apiproxy/resources/java. Jest to wymagana lokalizacja dla plików JAR, które chcesz wdrożyć za pomocą proxy.

    cp com/apigeesample/ResponseUppercase.class apiproxy/resources/java

Wdrażanie i wywoływanie proxy

W katalogu ./java-cookbook znajduje się skrypt wdrożenia. Zanim go uruchomisz, musisz szybko skonfigurować.

  1. Przejdź do katalogu api-platform-samples/doc-samples/java-cookbook.
  2. Jeśli jeszcze tego nie zrobisz, otwórz plik ../../setup/setenv.sh i edytuj go zgodnie z informacjami o koncie Apigee: nazwą użytkownika (adresem e-mail powiązanym z kontem), nazwą organizacji i domeną, której używasz do wykonywania wywołań zarządzania interfejsami API. Na przykład w przypadku chmury Edge domena to https://api.enterprise.apigee.com, ale jeśli używasz Edge Private Cloud, domena może być inna.
  3. Zapisz plik setenv.sh.
  4. Uruchom skrypt wdrożenia:
    ./deploy.sh
  5. Jeśli wdrożenie się powiedzie, uruchom skrypt wywołania:
    ./invoke.sh

    Skrypt wywołania wywołuje polecenie cURL, które wygląda tak:

    curl  http://$org-$env.$api_domain/java-cookbook/json

Odpowiedź wygląda mniej więcej tak:

< HTTP/1.1 200 OK
< Date: Tue, 09 May 2017 20:31:08 GMT
< Content-Type: APPLICATION/JSON; CHARSET=UTF-8
< Content-Length: 68
< Connection: keep-alive
< Access-Control-Allow-Origin: *
< ETag: W/"44-RA5ERT/MMLIK54NVBWBSZG"
< X-Powered-By: APIGEE
< Server: Apigee Router
<
* Curl_http_done: called premature == 0
* Connection #0 to host willwitman-test.apigee.net left intact
{"FIRSTNAME":"JOHN","LASTNAME":"DOE","CITY":"SAN JOSE","STATE":"CA"}

Przepływ proxy

To zrzut ekranu narzędzia do śledzenia pokazujący przepływ proxy:

Struktura proxy

Oto struktura proxy. Zwróć uwagę, że zawiera plik JAR w katalogu apiproxy/resources/java. Plik JAR jest wymagany. Udostępniamy go na potrzeby przykładu, ale jeśli wykonujesz niestandardowe działania, musisz go samodzielnie utworzyć i skopiować w to miejsce. Wskazówki dotyczące kompilowania i wdrażania wywołania Java znajdziesz w artykule Jak utworzyć wywołanie Java callout.

java-cookbook

    apiproxy
        java-cookbook.xml
    policies
        responseUppercase.xml
    proxies
        default.xml
    resources
        java
            ResponseUppercase.jar
    targets
        default.xml

Informacje o kodzie Java

Zasada Java Callout uruchamia ten kod Java, który konwertuje nagłówki odpowiedzi i treść odpowiedzi na wielkie litery. Pamiętaj, że program używa pakietów specyficznych dla Apigee. Te pakiety zawierają obiekty i metody, których możesz używać do bezpośredniej interakcji z przepływem proxy. Istnieją metody, które pozwalają pobierać i ustawiać zmienne przepływu, nagłówki, treść wiadomości i inne.

package com.apigeesample;

import com.apigee.flow.execution.ExecutionContext;
import com.apigee.flow.execution.ExecutionResult;
import com.apigee.flow.execution.spi.Execution;
import com.apigee.flow.message.MessageContext;

import java.util.Set; 

public class ResponseUppercase implements Execution{
    public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) {
        try {
            Set headers = messageContext.getMessage().getHeaderNames();
            for (String header : headers) {
                String h = messageContext.getMessage().getHeader(header).toUpperCase();
                messageContext.getMessage().setHeader(header, h);
            }
            String content = messageContext.getMessage().getContent();
            messageContext.getMessage().setContent(content.toUpperCase());
            return ExecutionResult.SUCCESS;
        } catch (Exception e) {
                return ExecutionResult.ABORT;
        }
    }
}

Sprawdź przykładowe proxy

Otwórz proxy i sprawdź pliki. Oto zasada Java Callout. Zwróć uwagę, jak odwołuje się do klasy, którą wywołuje wywołanie, i pliku JAR. Wszystkie zasady Java Callout są zgodne z tym wzorcem. Zapoznaj się też z zasadą Java Callout.

<JavaCallout name="responseUppercase">         
    <ClassName>com.apigeesample.ResponseUppercase</ClassName>         
    <ResourceURL>java://ResponseUppercase.jar</ResourceURL> 
</JavaCallout>