Need to add application/javascript and text/css as binary types for

Đang mở
#1,435 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
30/100
Loại issue
Lỗi
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Đình trệ
Công nghệ
aws, java, spring-boot
Lĩnh vực
api, backend, cloud

Hướng nghiên cứu

Bắt đầu với ví dụ StreamLambdaHandler.java được liên kết và kiểm tra cấu hình nội dung nhị phân của serverless container cho các phản hồi AWS. Tái hiện vấn đề với springdoc-openapi-starter-webmvc-ui, sau đó xác định xem application/javascript và text/css có nên được nhận diện theo mặc định hay không; hoàn tất khi các asset của Swagger UI được tải qua API Gateway và có coverage cho hành vi phản hồi được mong đợi.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

I don't know which component in the stack is wrong.

  • springdoc-openapi-starter-webmvc-ui will serve up swagger-ui/index.html, locally 100% and when deployed to a AWS API Gateway (HTTP-style) only some .js files and the .html file serve, the rest blowing up in the API Gateway response with no error message

I think the minimal repro is to add springdoc-openapi-starter-webmvc-ui (via pom.xml) to the ping controller example (which is a bad name for an endpoint because it clashes with the automatically provided route of AWS API Gateway, I usually have to rename it to pong)

I told the container to treat application/javascript and text/css as binary and API Gateway stopped trying to do something (unnecessary encoding/decoding) to the response and now swagger-ui loads.

I'm leaving this here because other issues have run into the same problem and came up with worse workarounds (like stop even trying to serve some content types on API Gateway at all)

That this works locally in tomcat makes me think that something is wrong with API Gateway or serverless-container.

        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
            <version>2.8.6</version>
        </dependency>
public class StreamLambdaHandler implements RequestStreamHandler, Resource {
    private static SpringBootLambdaContainerHandler<AwsProxyRequest, AwsProxyResponse> handler;
    static {
        try {
            handler = SpringBootLambdaContainerHandler.getAwsProxyHandler(Application.class);
            LambdaContainerHandler.getContainerConfig().addBinaryContentTypes("application/javascript");
            LambdaContainerHandler.getContainerConfig().addBinaryContentTypes("text/css");
        } catch (ContainerInitializationException e) {
            // if we fail here. We re-throw the exception to force another cold start
            e.printStackTrace();
            throw new RuntimeException("Could not initialize Spring Boot application", e);
        }
    }
}

My code: https://github.com/matthewdeanmartin/lambda_for_free/blob/main/spring_http/src/main/java/com/example/interviews/StreamLambdaHandler.java#L27

Ngôn ngữ chính
Java
Star
1.6k
Fork
575
Merge trung bình
1 ngày 15 giờ
Pull request đã merge (30 ngày)
12

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của aws/serverless-java-container

Tất cả issue của aws/serverless-java-container

Issue tương tự

Thêm issue về Java

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.