Chuyển đổi phản hồi thành chữ hoa bằng một chú thích Java

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến Tài liệu về Apigee X.
thông tin

Nếu đang dùng thử chú thích Java lần đầu tiên, bạn nên bắt đầu với Cách tạo chú thích Java chú thích.

Mẫu sổ tay nấu ăn này minh hoạ cách tạo một chính sách Javatooltip đơn giản để có thể thực thi mã Java tuỳ chỉnh trong ngữ cảnh của luồng proxy.

Mã mẫu có chức năng gì?

Proxy API trong mẫu này gọi một dịch vụ mục tiêu trả về một phản hồi JSON đơn giản. Chiến lược phát hành đĩa đơn Chính sách Chú thích Java được đặt trong quy trình phản hồi mục tiêu. Mã Java chuyển đổi tiêu đề và nội dung của thư trả lời viết hoa. Đây là một ví dụ đơn giản; tuy nhiên, nó minh hoạ cách để mã Java tuỳ chỉnh hoạt động trong ngữ cảnh proxy API trên Edge.

Dùng thử mẫu

Tải dự án xuống

Để đơn giản hoá, bạn có thể tải dự án này xuống từ kho lưu trữ api-platform-samples của Apigee trên GitHub.

  1. Tải xuống hoặc sao chép api-platform-samples vào hệ thống của bạn.
  2. Trong cửa sổ dòng lệnh hoặc trình soạn thảo mã mà bạn chọn, hãy chuyển đến Dự án api-platform-samples/doc-samples/java-cookbook.

Biên dịch mã bằng Maven

Dự án được thiết lập để bạn có thể biên dịch bằng Maven. Nếu bạn muốn sử dụng javac, chúng ta sẽ đưa vào một ví dụ cũng như sau ví dụ Maven.

  1. Đảm bảo rằng bạn đã cài đặt Maven:
    mvn -version
    
  2. Thực thi tập lệnh java-cookbook/buildsetup.sh. Tập lệnh này sẽ cài đặt các phần phụ thuộc JAR bắt buộc trong kho lưu trữ Maven cục bộ của bạn.
  3. cd vào thư mục java-cookbool/callout.
  4. Thực thi Maven:
    mvn clean package
    
  5. Nếu bạn muốn, hãy xác minh rằng tệp JAR edge-custom-policy-java-cookbook.jar là đã sao chép vào java-cookbook/apiproxy/resources/java. Đây là vị trí bắt buộc cho Tệp JAR mà bạn muốn triển khai bằng proxy.

Biên dịch bằng javac

Nếu muốn sử dụng javac để biên dịch mã, bạn có thể làm như sau tiếp theo (từ thư mục java-cookbook). Đã cung cấp các tệp JAR bắt buộc cho bạn trong thư mục java-cookbook/lib.

  1. đĩa cd sang api-platform-samples/doc-samples/java-cookbook.
  2. Hãy đảm bảo bạn có javac trong đường dẫn của mình.

    javac -version
    
  3. Thực thi lệnh javac sau:

    javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/ResponseUppercase.java
    
  4. Sao chép tệp JAR vào thư mục apiproxy/resources/java. Đây là vị trí bắt buộc cho các tệp JAR mà bạn muốn triển khai bằng proxy.

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

Triển khai và gọi proxy

Tập lệnh triển khai được cung cấp trong thư mục ./java-cookbook. Nhưng trước khi bạn chạy thiết bị đó, bạn cần thiết lập nhanh.

  1. CD sang api-platform-samples/doc-samples/java-cookbook
  2. Nếu bạn chưa thực hiện, hãy mở tệp ../../setup/setenv.sh rồi chỉnh sửa mã này được thể hiện bằng thông tin tài khoản Apigee của bạn: tên người dùng (địa chỉ email) được liên kết với tài khoản của bạn), tên tổ chức và miền mà bạn sử dụng để tạo API các cuộc gọi quản lý. Ví dụ: đối với Cloud Cloud, miền là https://api.enterprise.apigee.com; tuy nhiên, miền của bạn có thể khác nếu bạn bằng Edge Private Cloud.
  3. Lưu tệp setenv.sh.
  4. Thực thi tập lệnh triển khai:
    ./deploy.sh
    
  5. Nếu triển khai thành công, hãy thực thi tập lệnh gọi:
    ./invoke.sh
    

    Tập lệnh gọi một lệnh cURL có dạng như sau:

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

Phản hồi sẽ có dạng như sau:

< 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"}

Luồng proxy

Đây là ảnh chụp công cụ theo dõi cho thấy luồng proxy:

Cấu trúc proxy

Đây là cấu trúc của proxy. Lưu ý rằng tệp này bao gồm tệp JAR trong phần tử Thư mục apiproxy/resources/java. Bạn phải có tệp JAR. Chúng tôi cung cấp dịch vụ này cho mẫu, nhưng nếu bạn đang thực hiện công việc tuỳ chỉnh, bạn cần tự tạo và sao chép nó vào vị trí. Để biết hướng dẫn về cách biên dịch và triển khai chú thích Java, hãy xem bài viết Cách tạo Java chú thích.

java-cookbook

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

Giới thiệu về mã Java

Chính sách Chú thích Java chạy mã Java sau đây, mã này chuyển đổi tiêu đề phản hồi và nội dung phản hồi thành chữ hoa. Xin lưu ý rằng chương trình này sử dụng các gói dành riêng cho Apigee. Các gói này cung cấp các đối tượng và phương thức mà bạn có thể sử dụng để tương tác trực tiếp với luồng proxy. Phương thức cho phép bạn nhận và thiết lập các biến luồng, tiêu đề, nội dung thông báo, v.v.

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;
        }
    }
}

Kiểm tra proxy mẫu

Chúng tôi để bạn mở proxy và kiểm tra tệp. Dưới đây là Chính sách về chú thích Java. Hãy lưu ý cách tham chiếu đến lớp mà chú thích thực thi và tệp JAR. Tất cả chú thích Java đều tuân theo mẫu này. Xem thêm Chính sách về chú thích Java.

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