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 bài viết Cách tạo chú thích Java.

Mẫu sổ tay nấu ăn này minh hoạ cách tạo một chính sách Chú thích Java đơn giản nhằm thực thi mã Java tuỳ chỉnh trong bối 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ề phản hồi JSON đơn giản. Chính sách chú thích Java được đặt trên quy trình phản hồi mục tiêu. Mã Java chuyển đổi tiêu đề và nội dung phản hồi thành chữ cái viết hoa. Đây là một ví dụ đơn giản; tuy nhiên, hình minh hoạ cách khiến 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á mọi thứ, bạn có thể tải dự án này xuống qua kho lưu trữ api-platform-samples của Apigee trên GitHub.

  1. Tải hoặc sao chép api-platform-samples vào hệ thống của bạn.
  2. Trong một thiết bị đầu cuối 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 tôi sẽ đưa vào một ví dụ cũng như tuân theo ví dụ về Maven.

  1. Hãy đả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ộ.
  3. cd vào thư mục java-cookbool/callout.
  4. Thực thi Maven:
    mvn clean package
    
  5. Nếu muốn, hãy xác minh rằng tệp JAR edge-custom-policy-java-cookbook.jar đã được sao chép vào java-cookbook/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.

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 tương tự như sau (trong thư mục java-cookbook). Các tệp JAR bắt buộc sẽ được cung cấp cho bạn trong thư mục java-cookbook/lib.

  1. 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 đây:

    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. Tuy nhiên, trước khi chạy, 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 làm việc này, hãy mở tệp ../../setup/setenv.sh và chỉnh sửa tệp như được nêu trong thông tin tài khoản Apigee của bạn: tên người dùng (địa chỉ email 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 dùng để thực hiện lệnh gọi quản lý API. Ví dụ: đối với đám mây ở Edge, 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 sử dụ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 sẽ 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. Xin lưu ý rằng ứng dụng này có chứa một tệp JAR trong thư mục apiproxy/resources/java. Tệp JAR là bắt buộc. Chúng tôi cung cấp mã này cho mẫu, nhưng nếu đ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í này. Để 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 chú thích Java.

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ể dùng để tương tác trực tiếp với luồng proxy. Các phương thức cho phép bạn lấy và đặt 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 các tệp. Sau đây là Chính sách về chú thích Java. Hãy lưu ý cách phần tử này tham chiếu đến lớp mà chú thích thực thi và tệp JAR. Tất cả các chính sách về 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>