2015-07-11 16 views
10

Sử dụng API API của Amazon Tôi có thể tạo điểm cuối sẽ gọi hàm lambda xuất văn bản thuần. Tuy nhiên, khi tôi thực hiện một yêu cầu về điểm cuối, đầu ra quay trở lại với kiểu nội dung mặc định là "application/json". Điều này đưa ra phản hồi văn bản thuần túy được bao bọc trong dấu ngoặc kép. Tôi muốn thay đổi tiêu đề phản hồi thành "text/plain" để nó chỉ xuất ra văn bản chưa được mở với dấu ngoặc kép. Có ai biết cách để làm điều này không?xuất nội dung văn bản thuần từ điểm cuối cổng API của Amazon

+1

Tôi đã quản lý để thay đổi loại nội dung, nhưng không xóa dấu ngoặc kép, bất kỳ tin tức nào? – Korri

+0

Tôi đã không thực hiện bất kỳ tiến bộ với điều này. Tôi có ấn tượng rằng Amazon đang cố chặn bạn xuất ra nội dung văn bản thuần túy. Dường như chúng cho phép bạn chuyển đổi từ JSON sang XML, điều này khiến tôi tin rằng bạn có thể chuyển đổi thành bất kỳ loại nội dung nào. Tôi không thể tìm thấy bất kỳ thứ gì trong tài liệu hoặc tài liệu tiếp thị của họ nói rõ rằng họ không muốn bạn xuất văn bản thuần túy, nhưng tôi không thể tìm ra cách để làm điều đó. Tôi đoán là họ đang cố ngăn bạn không cố gắng sử dụng nó như một nền tảng lưu trữ đầy đủ cho các ứng dụng web. –

+0

câu trả lời này cho phép bạn gửi lại về cơ bản mọi thứ: http://stackoverflow.com/a/33614870/2300810 – zhywu

Trả lời

26

Vì vậy, tôi đã cố gắng làm việc này.

Trong phản ứng tích hợp, bạn cần phải thêm một mẫu Mapping mới của loại "text/plain"

Trong hộp để nhập mẫu loại:

$input.path('$') 

Hoặc đường dẫn đến giá trị bạn muốn trả lại và lưu Mẫu bản đồ mới (không chọn mô hình!)

Sau đó, bạn sẽ cần triển khai lại API để thay đổi có hiệu lực.

Một điều tôi đã có tại chỗ, là Phương thức trả lời cũng được đặt thành "văn bản/đồng bằng" bằng mô hình Rỗng. Tôi không chắc liệu điều này có hiệu lực hay không, nhưng nếu việc trên không hiệu quả, chỉ cần thêm điều đó vào.

+1

Điều này cũng hữu ích khi cố gắng trả về XML. Tôi đặt Mẫu ánh xạ thành "application/xml" và trong mã của tôi, tôi có 'context.succeed (''); '- thật đáng buồn, lời nhắc triển khai lại cũng hữu ích. – chandlervdw

+0

Điều này giúp tôi tiết kiệm thời gian. Nên là câu trả lời được chọn. –

1

Cách của Anthony vẫn để lại dấu ngoặc kép trên chuỗi đầu ra. Vì vậy, để tóm tắt lại, trên phản hồi tích hợp, hãy tạo Mẫu bản đồ mới cho loại text/plain. Nó cần phải có giá trị:

$input.path('$') 

Bây giờ, nếu bạn chạy context.succeed("somestring"), sản lượng sẽ được "somestring", bọc trong dấu ngoặc kép. Điều này là bởi vì, nó được xâu thành chuỗi như một thuật ngữ json. Là một workaround khó chịu, bạn có thể làm điều gì đó như:

var base = JSON.stringify; 
JSON.stringify = function(given) { 
    JSON.stringify = base; 
    return given; 
} 
context.succeed("somestring"); 

Là một mặt lưu ý, bạn có thể tìm thêm gợi ý bằng cách đọc qua console.log(context.succeed).

+0

Do đó, phương pháp tôi đang sử dụng là JSONPath, do đó input.path ('$') tham chiếu đến phần tử đường dẫn JSON, bạn cần trả về JSON hợp lệ: {"value": "something" } –

Các vấn đề liên quan