Share via


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.

Ö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'i context.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 PUTgibi POSTfunction.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