Express.js'den Azure İşlevleri'a geçiş
Express.js, web geliştiricileri için en popüler Node.js çerçevelerinden biridir ve API uç noktalarına hizmet veren uygulamalar oluşturmak için mükemmel bir seçimdir.
Kodu sunucusuz mimariye geçirirken, Express.js uç noktalarının yeniden düzenlenmesi aşağıdaki alanları etkiler:
Ara yazılım: Express.js güçlü bir ara yazılım koleksiyonuna sahiptir. Azure İşlevleri ve Azure API Management özellikleri sayesinde birçok ara yazılım modülü artık gerekli değildir. Uç noktaları geçirmeden önce temel ara yazılım tarafından işlenen herhangi bir mantığı çoğaltabileceğinizden veya değiştirebileceğinizden emin olun.
Farklı API'ler: hem istekleri hem de yanıtları işlemek için kullanılan API, Azure İşlevleri ve Express.js arasında farklılık gösterir. Aşağıdaki örnekte gerekli değişiklikler ayrıntılı olarak verilmiştir.
Varsayılan yol: Varsayılan olarak, Azure İşlevleri uç noktaları yol altında
api
gösterilir. Yönlendirme kuralları, aracılığıyla host.json dosyasında yapılandırılabilirroutePrefix
.Yapılandırma ve kurallar: İşlevler uygulaması HTTP fiillerini tanımlamak, güvenlik ilkelerini tanımlamak ve işlevin giriş ve çıkışını yapılandırmak için function.json dosyasını kullanır. Varsayılan olarak, işlev dosyalarını içeren klasör adı uç nokta adını tanımlar, ancak adı function.json dosyasındaki
route
özelliği aracılığıyla değiştirebilirsiniz.
İpucu
Azure İşlevleri ile Node.js ve Express API'lerini Sunucusuz API'lere yeniden düzenleme etkileşimli öğreticisi aracılığıyla daha fazla bilgi edinin.
Örnek
Express.js
Aşağıdaki örnekte tipik bir Express.js GET
uç noktası gösterilmektedir.
// server.js
app.get('/hello', (req, res) => {
try {
res.send("Success!");
} catch(error) {
const err = JSON.stringify(error);
res.status(500).send(`Request error. ${err}`);
}
});
adresine bir GET
istek gönderildiğinde/hello
, içeren Success
bir HTTP 200
yanıt döndürülür. Uç nokta bir hatayla karşılaşırsa, yanıt hata ayrıntılarını içeren bir HTTP 500
olur.
Azure İşlevleri
Azure İşlevleri yapılandırma ve kod dosyalarını her işlev için tek bir klasörde düzenler. Varsayılan olarak, klasörün adı işlev adını belirler.
Örneğin, adlı hello
bir işlevin aşağıdaki dosyaları içeren bir klasörü vardır.
| - hello
| - function.json
| - index.js
Aşağıdaki örnek, yukarıdaki Express.js uç noktasıyla aynı sonucu ancak Azure İşlevleri uygular.
// hello/index.js
module.exports = async function (context, req) {
try {
context.res = { body: "Success!" };
} catch(error) {
const err = JSON.stringify(error);
context.res = {
status: 500,
body: `Request error. ${err}`
};
}
};
İşlevler'e geçerken aşağıdaki değişiklikler yapılır:
Modülü: İşlev kodu bir JavaScript modülü olarak uygulanır.
Bağlam ve yanıt nesnesi: İşlevin
context
çalışma zamanıyla iletişim kurmanızı sağlar. Bağlamdan istek verilerini okuyabilir ve işlevin yanıtını ayarlayabilirsiniz. Zaman uyumlu kod, yürütmeyi tamamlamak için 1.x'icontext.done()
çağırmanızı gerektirirken, 2.x+async
işlevleri isteği örtük olarak çözer.Adlandırma kuralı: Azure İşlevleri dosyalarını içeren klasör adı varsayılan olarak uç nokta adı olarak kullanılır (bu, function.json dosyasında geçersiz kılınabilir).
Yapılandırma: HTTP fiillerini veya
PUT
gibiPOST
function.json dosyasında tanımlarsınız.
Aşağıdaki function.json dosyası işlevin yapılandırma bilgilerini içerir.
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": ["get"]
},
{
"type": "http",
"direction": "out",
"name": "res"
}
]
}
dizisinde methods
tanımlayarak get
işlevi HTTP GET
istekleri için kullanılabilir. API'nizin destek POST
isteklerini kabul etmelerini istiyorsanız diziye de ekleyebilirsiniz post
.
Sonraki adımlar
- Azure İşlevleri ile Node.js ve Express API'lerini Sunucusuz API'lere yeniden düzenleme etkileşimli öğreticisi ile daha fazla bilgi edinin