Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale, Node.js fonksiyon uygulamanızda HTTP istekleri ve yanıtlarını nasıl yayınlayacağınızı açıklar. Akışı nasıl etkinleştireceğini, büyük verileri nasıl işleyeceğinizi ve gerçek zamanlı HTTP senaryolarını nasıl yöneteceğinizi öğrenin.
Note
HTTP akışları için v4 programlama modeli gereklidir. V3 kullanıyorsan, yükseltme için göç rehberine bak.
Overview
HTTP akışları özelliği, büyük verileri işlemeyi, OpenAI yanıtlarını akışını, dinamik içerik sunmayı ve diğer temel HTTP senaryolarını desteklemeyi kolaylaştırır. Node.js işlev uygulamanızdaki HTTP uç noktalarına istekleri ve yanıtları akışla göndermenizi sağlar. Uygulamanızın http üzerinden istemci ve sunucu arasında gerçek zamanlı değişim ve etkileşim gerektirdiği senaryolarda HTTP akışlarını kullanın. HTTP kullanırken uygulamalarınız için en iyi performansı ve güvenilirliği elde etmek için HTTP akışlarını da kullanabilirsiniz.
Prerequisites
-
@azure/functionsnpm paketi sürüm 4.3.0 veya üzeri. - Azure İşlevleri runtime sürüm 4.28 veya üzeri.
- Azure İşlevleri Core Tools sürüm 4.0.5530 veya daha sonrası, doğru çalışma zamanı sürümünü içerir.
Akışları etkinleştirme
Azure'daki işlev uygulamanızda ve yerel projelerinizde HTTP akışlarını etkinleştirmek için şu adımları kullanın:
Büyük miktarlarda veri akışı yapmayı planlıyorsanız, Azure'da
FUNCTIONS_REQUEST_BODY_SIZE_LIMITayarını değiştirin. Varsayılan maksimum gövde boyutu104857600, bu da taleplerinizi yaklaşık 100 MB ile sınırlar.Yerel geliştirme için
FUNCTIONS_REQUEST_BODY_SIZE_LIMITögesini de local.settings.json dosyasına ekleyin.Ana alanınıza dahil edilen herhangi bir dosyaya aşağıdaki kodu uygulamanıza ekleyin.
const { app } = require("@azure/functions");
app.setup({ enableHttpStream: true });
Tip
Yayından en iyi faydayı almak için doğrudan kullanın request.body .
request.text() gibi yöntemler, tüm gövdeyi tamponlayıp bir dize döndürür; bu da veri akışının amacını boşa çıkarır.
Akış örnekleri
Aşağıdaki örnek, HTTP POST talebi aracılığıyla veri alan HTTP tetikleyici bir fonksiyonu göstermektedir. Fonksiyon, bu veriyi belirli bir çıktı dosyasına aktarır:
const { app } = require("@azure/functions");
const fs = require("fs");
const path = require("path");
app.http("httpTriggerStreamRequest", {
methods: ["POST"],
handler: async (request, context) => {
context.log("HTTP trigger function processed a request.");
if (!request.body) {
return {
status: 400,
body: "Request body is required"
};
}
// Create a writable stream to a file
const outputPath = path.join(__dirname, "streamed-output.txt");
const writeStream = fs.createWriteStream(outputPath);
try {
// Stream the request body to the file
const reader = request.body.getReader();
let done = false;
while (!done) {
const { value, done: readerDone } = await reader.read();
done = readerDone;
if (value) {
writeStream.write(value);
}
}
writeStream.end();
return {
status: 200,
body: "Data successfully streamed to file"
};
} catch (error) {
context.log.error("Error streaming data:", error);
return {
status: 500,
body: "Error processing stream"
};
}
}
});
Aşağıdaki örnek, gelen HTTP GET taleplerine yanıt olarak dosyanın içeriğini akış olarak aktaran HTTP tetiklenen bir fonksiyonu göstermektedir:
const { app } = require("@azure/functions");
const fs = require("fs");
const path = require("path");
app.http("httpTriggerStreamResponse", {
methods: ["GET"],
handler: async (request, context) => {
context.log("HTTP trigger function processed a request.");
const filePath = path.join(__dirname, "sample-data.txt");
try {
// Check if file exists
if (!fs.existsSync(filePath)) {
return {
status: 404,
body: "File not found"
};
}
// Create a readable stream from the file
const readStream = fs.createReadStream(filePath);
return {
status: 200,
headers: {
"Content-Type": "text/plain",
"Transfer-Encoding": "chunked"
},
body: readStream
};
} catch (error) {
context.log.error("Error streaming file:", error);
return {
status: 500,
body: "Error streaming file"
};
}
}
});
Akış kullanan hazır bir örnek uygulama için GitHub'daki bu örneğe göz atın.