2015-07-11 35 views
10

Amazon'un API Ağ Geçidini Kullanma Düz metin çıkaran bir lambda işlevini çağıran bir bitiş noktası oluşturabilirim. Ancak, son nokta üzerinde bir istek yaptığımda, çıktı, varsayılan uygulama türü olan "application/json" ile geri geliyor. Bu, tırnak içine alınmış düz metin yanıtını verir. Yanıt üstbilgisini "text/plain" olarak değiştirmek istiyorum, bu yüzden sadece tırnakları açılmamış olan metni çıkarır. Bunu yapmayı bilen var mı?Amazon API ağ geçidi bitiş noktasından çıktı düz metin içeriği

+1

İçerik türünü değiştirmeyi başardım, ancak alıntıları, herhangi bir haberi kaldırmayı başaramadım? – Korri

+0

Bu konuda herhangi bir ilerleme kaydetmedim. Amazon'un düz metin içeriği çıkarmanızı engellemeye çalıştığı izlenimini ediniyorum. Herhangi bir içerik türüne dönüşebileceğine inanmamı sağlayan JSON'dan XML'e dönüştürmenize izin veriyor gibi görünüyor. Pazarlama materyallerinde veya belgelerinde, düz metin çıkarmanızı istemediklerini belirten hiçbir şey bulamıyorum, ancak bunu yapmanın bir yolunu anlayamıyorum. Tahminimce, bunu web uygulamaları için tam bir barındırma platformu olarak kullanmayı denemenizi engellemeye çalışıyorlar. –

+0

Bu yanıt, temel olarak herhangi bir şey göndermenizi sağlar: http://stackoverflow.com/a/33614870/2300810 – zhywu

cevap

26

Bu yüzden çalışmayı başardım. değerine

$input.path('$') 

Veya yolunu: Entegrasyon Tepki olarak

, şablon türünü girmek için kutusunda "text/ova"

türde yeni Haritalama Şablon eklemem gerekiyor Yeni Eşleme Şablonunu döndürmek ve kaydetmek istiyorsanız (bir model seçmeyin!)

Bundan sonra, değişikliğin etkili olması için API'nizi yeniden dağıtmanız gerekecektir.

Halihazırda sahip olduğum bir şey, Metodu Tepki de Boş modeli kullanarak "text/plain" olarak ayarlanmıştı. Bunun bir etkisi olup olmadığından emin değilim, ancak yukarıdakiler işe yaramıyorsa, bunu ekleyin.

+1

Bu, XML döndürmeye çalışırken de kullanışlıdır. Haritalama Şablonunu "application/xml" olarak ayarlıyorum ve kodumda context.succeed (''); '- ne yazık ki, yeniden yerleştirme hatırlatıcısı da yardımcı oldu. – chandlervdw

+0

Bu bana saat tasarrufu sağlar. Seçilen cevap olmalı. –

1

Anthony'in çıkış dizisinde hala sol tırnak işareti ekleyin. Bu nedenle, tümleştirme yanıtında, text/plain türünde yeni bir Eşleme Şablonu oluşturun. Eğer context.succeed("somestring") çalıştırırsanız, çıkış tırnak içinde sarılı "somestring" olacağını, Şimdi

$input.path('$') 

: Bu değere sahip olmalıdır. Bunun nedeni, bir json terimi olarak dizilmiş olmasıdır. pis çözüm olarak, böyle bir şey yapmak olabilir: Bir yan not olarak

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

, sen console.log(context.succeed) okuyarak daha ipuçları elde edebilirsiniz.

+0

Bunun için, kullanıyorum yöntem JSONPath, yani input.path ('$') bir JSON yol öğesine başvuruyor, ergo geçerli JSON: {"value": "bir şey" döndürmeniz gerekiyor } –

İlgili konular