日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

如何建立一個(gè)有趣的二維碼項(xiàng)目和學(xué)習(xí) Azure 函數(shù)


如果你想學(xué)習(xí)如何構(gòu)建 Azure 函數(shù),這里有一個(gè)有趣的項(xiàng)目。這個(gè)項(xiàng)目有點(diǎn)傻,但是很有教育意義。

我們將構(gòu)建一個(gè)二維碼生成器,它在 Azure 函數(shù)中100% 運(yùn)行。互聯(lián)網(wǎng)上有成千上萬的二維碼生成器,所以這是一個(gè)愚蠢的練習(xí),但我想挑戰(zhàn) Azure 函數(shù)的極限,向你展示它們是多么的酷,并激勵(lì)你用它們創(chuàng)建很酷的東西。

如果你更喜歡看視頻,我們這里有完整的教程:

 

在本教程中,你將學(xué)到:

  • Azure 函數(shù)是如何工作的,它們有多簡(jiǎn)單
  • 如何使用.NET 庫生成 QR 碼
  • 建造這樣的東西需要多少努力

這會(huì)很有趣的,我希望你能跟著我學(xué)習(xí)。我們將在這個(gè)教程中做什么:

  • 創(chuàng)建 Azure 函數(shù)
  • 實(shí)現(xiàn)一個(gè) QR 生成器
  • 為它建立一個(gè)粗糙的前沿陣地
  • 使用 Azure 函數(shù)核心工具將其部署到 Azure

在本教程的最后,您將擁有一個(gè)功能性的二維碼生成器,它可能會(huì)激發(fā)您使用 Azure 函數(shù)構(gòu)建更酷的東西。它們結(jié)構(gòu)緊湊、簡(jiǎn)單、易于構(gòu)建。

您可以在這里找到該項(xiàng)目的完整源代碼。

什么是 Azure 函數(shù)?

Azure 函數(shù)是運(yùn)行在 Azure 中的無服務(wù)器應(yīng)用程序。它們是可以在沒有服務(wù)器或復(fù)雜實(shí)例的情況下執(zhí)行的小塊代碼。大多數(shù) Azure 函數(shù)都是“微服務(wù)”,它們完成一個(gè)小任務(wù),并且做得很好。

Azure 函數(shù)還可以響應(yīng) HTTP 觸發(fā)器,作為一種“迷你 API”它們像 Web API 一樣響應(yīng) HTTP 請(qǐng)求,但是使用函數(shù)的設(shè)置要少得多。

我開始聽起來像一個(gè)廣告,但它是令人敬畏的。幾年前,這個(gè)項(xiàng)目要求您在某個(gè) IIS 服務(wù)器上設(shè)置服務(wù)器或 ASP.NET Web API。現(xiàn)在我們只需要幾行代碼就可以做到這一點(diǎn),并將其推送到云端。Azure 函數(shù)允許你專注于構(gòu)建很酷的東西,而不是所有的設(shè)置。

規(guī)定

以下是本教程所需的內(nèi)容。我將在 windows11中構(gòu)建它,但我們不使用 VisualStudio。我將使用這個(gè) dotnet 驅(qū)動(dòng)程序,所以您可以在 mac 或 OSX 上復(fù)制它,如果您愿意的話。你必須在你的機(jī)器上安裝這個(gè)(免費(fèi)的)軟件。

你需要:

  • 微軟 Azure Account 帳戶
  • .NET 6
  • Azure Functions Core Tools
  • Azure CLI Tools Azure CLI
  • Visual Studio Code VisualStudio

我們開始吧!

創(chuàng)建新項(xiàng)目

我們將使用 Azure CLI 為我們創(chuàng)建一個(gè)新的 Azure 函數(shù),我們將使用 dotnet 驅(qū)動(dòng)程序來安裝軟件。

VisualStudio 可以為我們實(shí)現(xiàn)自動(dòng)化,但是這樣做可以更好地了解所涉及的步驟,并且可以在許多平臺(tái)上完成。

首先,我們將初始化一個(gè)新函數(shù)。我們將使用 func 命令創(chuàng)建一個(gè)名為 QRCodeGen 的新項(xiàng)目。我們將工作者運(yùn)行時(shí)指定為“ dotnet”來選擇 C # 作為所使用的語言。

在項(xiàng)目或存儲(chǔ)庫文件夾中運(yùn)行此命令:

Shell

func init QRCodeGen --worker-runtime dotnet

 

如果你看一下文件夾,里面沒什么東西:

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

我們?nèi)匀恍枰陧?xiàng)目中創(chuàng)建一個(gè) Azure 函數(shù)。Azure 函數(shù)有一組模板,這取決于您正在開發(fā)的應(yīng)用程序的類型。我們希望創(chuàng)建一個(gè) HTTP 觸發(fā)器,一個(gè)響應(yīng) HTTP 請(qǐng)求的函數(shù)。

Shell

func new --template "Http Trigger" --name QRCodeGen --authlevel anonymous

 

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

如果您正在使用 VisualStudio 代碼,您可能會(huì)看到以下消息:

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

選擇 yes 來安裝擴(kuò)展。

 

現(xiàn)在您將看到 func 為您創(chuàng)建的一個(gè)示例函數(shù):

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

如果您想嘗試,可以在本地運(yùn)行它

Shell

func start

 

然后您將看到函數(shù)啟動(dòng),控制臺(tái)將向您提供一些關(guān)于如何使用應(yīng)用程序的指導(dǎo):

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

正如我們所看到的,我們可以向
http://localhost:7071/api/qrcodegen 發(fā)送 GET 或 POST。讓我們?cè)跒g覽器中加載它,看看一個(gè)簡(jiǎn)單的 GET 返回什么:

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

我們有一條信息顯示:

This HTTP triggered function was executed successfully. Pass a name in the query string or in the request body for a personalized response.

好的,讓我們深入研究一下代碼,看看這條信息是什么意思。

C#

string responseMessage = string.IsNullOrEmpty(name)br    ? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."br    : $"Hello, {name}. This HTTP triggered function executed successfully.";

正如您在上面的代碼中看到的,它正在檢查名稱中的值。如果該變量為空或 null,它將顯示我們剛才看到的消息。

但我們?nèi)绾翁畛溥@個(gè)值呢?幾行之后,我們?cè)诓樵冎锌吹揭粋€(gè)可以使用的參數(shù):

C#

string name = req.Query["name"];

 

如果它被填充,它將顯示一條包含名稱的消息。我們需要向它發(fā)送一個(gè) URL,名稱作為一個(gè)參數(shù),如下所示:

http://localhost:7071/api/QRCodeGen?name=Jeremy

讓我們?cè)囋囘@個(gè):

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

這是我的留言。現(xiàn)在我們知道函數(shù)正在按預(yù)期工作。我們加載一個(gè) URL,獲取參數(shù)并修改輸出。

為了簡(jiǎn)單起見,我們將把這個(gè)模型用于我們的二維碼生成器。我們將建立監(jiān)聽請(qǐng)求的 URL,并在 GET 命令中傳遞該值,然后返回一個(gè)二維碼。讓我們從生成二維碼開始。

安裝 QRCode 生成工具

將文本轉(zhuǎn)換成二維碼是相對(duì)復(fù)雜的。幸運(yùn)的是,你在吸毒。NET.你不必手工制造發(fā)電機(jī)。這個(gè)問題很久以前就解決了。我們將使用庫生成一個(gè)。我們的 PNG 二維碼。我們只需要圍繞它編寫一些代碼,并構(gòu)建一個(gè)工具來解決我們的問題。

首先,讓我們從 Manuel BL 安裝 QRCode Generator 包。我們會(huì)使用網(wǎng)絡(luò)驅(qū)動(dòng)程序。我將在撰寫本文時(shí)指定最新版本。

Shell

dotnet add package Net.Codecrete.QrCodeGenerator --version 2.0.1

 

QRCode 生成器工作得很好,但只能生成。Svgs.因?yàn)槲覀兿胍粋€(gè)。PNG (位圖)格式,并希望它在多種環(huán)境下工作,我們需要安裝 SkiaSharp 軟件包:

Shell

dotnet add package SkiaSharp

 

SkiaSharp 包含了生成位圖的功能,但是你必須下載并將這個(gè)文件添加到你的項(xiàng)目中:

https://github.com/manuelbl/QrCodeGenerator/blob/master/Demo-SkiaSharp/QrCodeBitmapExtensions.cs

在項(xiàng)目文件夾中創(chuàng)建一個(gè)名為 qrcodebitmapextensions.cs 的文件,并將該文件的內(nèi)容復(fù)制到該文件中。這將允許您使用位圖,特別是。PNG 文件。

現(xiàn)在我們有了 QR 碼生成工具,讓它在函數(shù)中工作吧。

創(chuàng)建 QR 碼生成器函數(shù)

如果你打開 QRCodeGen.cs,你會(huì)看到為我們生成的 Azure 函數(shù)(一個(gè)方法) ,它看起來像這樣:

C#

[FunctionName("QRCodeGen")]br        public static async Task<IActionResult> Run(br            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,br            ILogger log)br        {br            log.LogInformation("C# HTTP trigger function processed a request.");brbr            string name = req.Query["name"];brbr            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();br            dynamic data = JsonConvert.DeserializeObject(requestBody);br            name = name ?? data?.name;brbr            string responseMessage = string.IsNullOrEmpty(name)br                ? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."br                : $"Hello, {name}. This HTTP triggered function executed successfully.";brbr            return new OkObjectResult(responseMessage);br        }

 

讓我們刪除這個(gè)方法:

C#

namespace QRCodeGenbr{br    public static class QRCodeGenbr    {brbr    }br}

 

接下來,讓我們添加一個(gè)生成 QR 碼的新方法。

首先,添加名稱裝飾器。這將為方法提供一個(gè)名稱并更改 URL 以訪問它。

C# C #

[FunctionName("GenerateQRCode")]

 

現(xiàn)在,當(dāng)我們運(yùn)行我們的應(yīng)用程序,網(wǎng)址將是:

http://localhost:7071/api/GenerateQRCode

這將是我們調(diào)用來生成二維碼的 URL,我們將從 JAVAScript 調(diào)用它。

接下來,創(chuàng)建方法:

C#

public static async Task<IActionResult> Generate(br  [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req, ILogger log)br  {brbr  }

 

我們正在創(chuàng)建一個(gè)名為 Generate 的方法,我們傳入一些參數(shù)來告訴應(yīng)用程序我們需要一個(gè) HttpTrigger:

[HttpTrigger

在這個(gè)觸發(fā)器中,我們傳遞了一些參數(shù)。

我們希望將授權(quán)設(shè)置為匿名,以便任何人都可以訪問它:

AuthorizationLevel.Anonymous

我們只想接受對(duì)此 URL 的 GET 請(qǐng)求,因此下面的參數(shù)指定:

"get",

然后我們將路線設(shè)置為空。如果我們想要一個(gè)不同的 URL 或特定的路由,我們可以在這里指定它。為了簡(jiǎn)單起見,我們就讓它保持原樣:

Route = null)]

接下來,我們將傳入一個(gè) HttpRequest 對(duì)象。這將包含來自傳入請(qǐng)求的數(shù)據(jù),以便我們可以從中獲取參數(shù)。當(dāng)一個(gè) GET 請(qǐng)求被發(fā)送到我們的函數(shù)中時(shí),我們可以提取頭、參數(shù)等信息。

HttpRequest req

最后,我們將傳入一個(gè)日志記錄器,以便能夠記錄消息。

ILogger log

很好,現(xiàn)在我們已經(jīng)構(gòu)建了方法,讓我們填寫它。

從查詢字符串收集信息

用戶必須發(fā)送他們想要轉(zhuǎn)換成二維碼的文本。通常是個(gè)網(wǎng)址。我們很早就決定讓事情變得簡(jiǎn)單。我們將從發(fā)送到 API 的查詢字符串中收集這些信息。

還記得我們傳遞給方法的 HttpRequest 嗎?我們可以從中得到 Query 參數(shù)。我們可以建立一個(gè)字符串變量,然后從查詢字符串中獲取參數(shù):

C#

string qrtext = req.Query["qrtext"];

 

添加以下消息以記錄輸出。我們想顯示發(fā)送到 qrtext 變量的內(nèi)容:

C#

log.LogInformation("Generating QR Code for {0}", qrtext);

 

這樣,我們就可以復(fù)查發(fā)送的內(nèi)容了。

現(xiàn)在,讓我們生成我們的二維碼。

生成二維碼到 PNG

接下來,我們需要獲取字符串,將其編碼為二維碼,然后將其導(dǎo)出為 PNG。

因此,我們將對(duì)之前安裝的 QRCode 庫進(jìn)行靜態(tài)調(diào)用。我們將傳入要生成的文本和錯(cuò)誤糾正值。中號(hào)就可以了。

C#

var qr = QrCode.EncodeText(qrtext, QrCode.Ecc.Medium);

 

這就是生成二維碼的全部過程。但它是 SVG 格式的。我們需要把它轉(zhuǎn)換成一個(gè) PNG,這樣我們就可以顯示它。

由于我們?cè)谏厦嫣砑恿宋粓D擴(kuò)展,現(xiàn)在我們的 QR 對(duì)象有一個(gè)方法可以將 QR 代碼轉(zhuǎn)換成帶有一些參數(shù)的 PNG。

我們需要添加一個(gè)比例: 我使用了10,這似乎產(chǎn)生了一個(gè)不錯(cuò)的大小。

我用1表示邊界。

然后我將前景(代碼)設(shè)置為 SKColors。黑色,背景設(shè)置為 SKColors。白色。

輸入密碼如下:

C#

var pngout = qr.ToPng(10, 1, SkiaSharp.SKColors.Black, SkiaSharp.SKColors.White);

 

現(xiàn)在我們有了二維碼。太簡(jiǎn)單了!現(xiàn)在讓我們將其打包為 JSON 并發(fā)送出去!

創(chuàng)建 JSON 返回對(duì)象

我們一直在公共靜態(tài)類 GenerateQRCode 中創(chuàng)建此代碼。讓我們創(chuàng)建另一個(gè)類,它將創(chuàng)建一個(gè)簡(jiǎn)單的對(duì)象,我們可以在調(diào)用 API 時(shí)返回這個(gè)對(duì)象。

在 GenerateQRCode 類的外部(在最后一個(gè)}之前)創(chuàng)建一個(gè) Return nObject 類。

這個(gè)類只有一個(gè)名為 Image 的屬性。這將是一個(gè)字符串,我們將把 PNG 編碼為文本。

C#

public class ReturnObject {br  public string Image { get; set; }br}

 

現(xiàn)在回到 GenerateQRCode 類,讓我們回到剛才的地方,我們將創(chuàng)建一個(gè)新的 Return nObject:

C#

var ourResult = new ReturnObject{};

 

現(xiàn)在,我們將 PNG 映像轉(zhuǎn)換為 Base64字符串,并將該字符串添加到返回對(duì)象中:

C#

ourResult.Image = Convert.ToBase64String(pngout);

放松。現(xiàn)在我們將把 POCO (普通的舊類對(duì)象)作為一個(gè)新的 JsonResult 返回,因此它將 JSON 返回給調(diào)用者:

C#

return new JsonResult(ourResult);

 

就是這樣。在大約七行代碼中,我們將一個(gè)字符串轉(zhuǎn)換成二維碼,然后將其發(fā)送出去.

我們來試試。

本地啟動(dòng)函數(shù)

 

我們將啟動(dòng)這個(gè)函數(shù)并讓它在本地偵聽。我們將發(fā)送一個(gè)帶有查詢的 GET 請(qǐng)求來測(cè)試它。

在命令行中鍵入以下內(nèi)容:

Shell

func start

 

啟動(dòng)函數(shù)。

你應(yīng)該看看這樣的東西:

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

現(xiàn)在我們將向

http://localhost:7071/api/GenerateQRCode

請(qǐng)記住,我們?cè)诖a中指定的參數(shù)是 qrtext,因此我將把它添加到最后:

http://localhost:7071/api/GenerateQRCode?qrtext="hello world"

我正在使用 Postman 進(jìn)行此操作,因此可以看到呈現(xiàn)的 JSON:

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

我們所做的日志記錄表明,它呈現(xiàn)的是“ hello world”:

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

所以步驟很簡(jiǎn)單:

  • 發(fā)送一個(gè) GET 到我們的 URL
  • 追加要生成的文本并將其添加到 qrtext
  • 接受 JSON

這是我們目前輸入的所有代碼:

C #

public static class QRCodeGenbr   {br      [FunctionName("GenerateQRCode")]br       public static async Task<IActionResult> GenerateQRCode(br       [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req, ILogger log)br       {br           string qrtext = req.Query["qrtext"];br           log.LogInformation("Generating QR Code for {0}", qrtext);brbr           var qr = QrCode.EncodeText(qrtext, QrCode.Ecc.Medium);br           var pngout = qr.ToPng(10, 1, SkiaSharp.SKColors.Black, SkiaSharp.SKColors.White);

 

這很棒,但我們還沒完。我們還需要部署它。但在此之前,讓我們構(gòu)建一個(gè)小型的、簡(jiǎn)單的 JavaScript 前端來與這個(gè)函數(shù)交互。

建造前端

我們希望這個(gè)二維碼生成器是完全獨(dú)立的。盡管 Azure 函數(shù)并不是真正用來提供網(wǎng)頁服務(wù)的,但它是可能的。在這種情況下,我們可以設(shè)置它,這樣就不需要在其他地方托管前端。這只是一個(gè)簡(jiǎn)單的網(wǎng)頁,所以讓我們提供它。

 

首先,我們將創(chuàng)建index.html。

創(chuàng)建一個(gè)名為 www 的文件夾并創(chuàng)建一個(gè)名為 index.html 的文件。

這將是一個(gè)超級(jí)簡(jiǎn)單,粗糙的前端ーー沒有什么花哨的,只是足以完成工作。

在頂部加入以下內(nèi)容:

HTML

<!DOCTYPE html>br<html>br<body>brbr<h2>QR Code Generator</h2>

 

這是我們的基本標(biāo)題。接下來,我們需要添加一個(gè)輸入來獲取用戶的文本。

HTML

<input id="inputbox" style="width: 250px;" ></input>br<br /><br />

 

這個(gè)輸入的 id 是 inputbox,因此我們可以使用 JavaScript 獲取這段文本。我在后面添加了幾個(gè)斷行符,以便將其間隔開。

接下來,我們將創(chuàng)建一個(gè)調(diào)用 JavaScript 函數(shù)的按鈕:

HTML

<button type="button" onclick="GetQRCode()">Create QR Code</button>

 

然后我們會(huì)有一個(gè)地方,我們將插入二維碼。請(qǐng)記住,這將是 Base64編碼的,因此我們可以在 GetQRCode 函數(shù)中用圖像填充這個(gè) div。

HTML

<div id="demo"></div>

 

接下來,我們將放入 GetQRCode 函數(shù),它將把一個(gè) XMLHttpRequest 返回到 Azure 函數(shù)中并檢索 JSON。然后它解析它,并用我們的映像替換“ demo”div。注意,我們添加了一個(gè)帶有頭信息的 img 標(biāo)記,這樣它就創(chuàng)建了一個(gè)我們可以在瀏覽器中查看的圖像。

C#

function GetQRCode() {br  var xhttp = new XMLHttpRequest();br  xhttp.onreadystatechange = function () {br    if (this.readyState == 4 && this.status == 200) {br      var ourJSON = JSON.parse(this.responseText);br      document.getElementById("demo").innerHTML = "<img src="data:image/png;base64, " + ourJSON.image + "">";br    }br  };br  input = document.getElementById('inputbox').value xhttp.open("GET", "/api/GenerateQRCode?qrtext=" + input, true);br  xhttp.send();br} <br/script>

 

很好! 現(xiàn)在我們有了一個(gè)索引頁面,它將為我們的 QRCode Generator 繪制一個(gè)小 UI。

 

我知道我們可以添加錯(cuò)誤糾正/處理或使用一個(gè)庫,但我想讓它盡可能簡(jiǎn)單。

接下來,我們需要使用 Azure 函數(shù)來完成這個(gè)任務(wù)。

提供index.html

 

Azure 函數(shù)并不打算成為 Web 服務(wù)器。事實(shí)上,Azure 靜態(tài) Web 應(yīng)用程序做得更好,但是我們盡量保持它的簡(jiǎn)單性。一個(gè) Azure 函數(shù)來完成這個(gè)任務(wù)。

我們可以推出 index.html 文件,這樣它將由瀏覽器提供。這為我們的應(yīng)用程序提供了一個(gè)小的界面,我們可以稍后回過頭來構(gòu)建一個(gè)完整的 Web 應(yīng)用程序,利用這個(gè)功能,或者將其添加到一個(gè)微服務(wù)包中(如果愿意的話)。

 

再次打開 generateqrcode.cs ,在類的頂部(在[ FunctionName (“ Form”)]上)添加另一個(gè)函數(shù)。

我們希望這個(gè)函數(shù)這次返回一個(gè) HttpResponseMessage。我們?nèi)詫⑹褂媚涿矸蒡?yàn)證將其設(shè)置為 HttpTrigger,并傳入與前面相同的值。

但是這一次,我們需要傳遞 ExectionContext 上下文。這為我們提供了執(zhí)行上下文,這樣我們就可以在本地文件系統(tǒng)中定位文件,稍后我將解釋其中的原因。

另一個(gè)是這將返回 HttpResponseMessage 而不是 IActionResult。

C# C #

[FunctionName("Form")]          brpublic static HttpResponseMessage Form([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] br                                       HttpRequest req, ILogger log, ExecutionContext context){

接下來,我們將打開放在 www 文件夾中的 index.html 文件,并將其全部作為文本讀入。這就是執(zhí)行上下文的來源。

我們希望打開運(yùn)行應(yīng)用程序的文件系統(tǒng)的 www 文件夾中的 index.html 文件。我們用這行代碼來實(shí)現(xiàn):

C#

string indexPage = File.ReadAllText(context.FunctionAppDirectory + "/www/index.html");

 

然后,我們將創(chuàng)建一個(gè)狀態(tài)代碼為 OK (200)的新 HttpResponseMessage:

C#

var result = new HttpResponseMessage(HttpStatusCode.OK);

 

現(xiàn)在我們需要添加一些標(biāo)題,并用我們從索引文件中讀取的文本填充“內(nèi)容”:

C#

result.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");brresult.Content = new ByteArrayContent(System.Text.Encoding.UTF8.GetBytes(indexPage));

 

現(xiàn)在我們有了一個(gè)帶有 text/html 頭的200 OK 消息,并且我們已經(jīng)將來自 index.html 的所有文本添加到了頭的內(nèi)容部分。

 

很俗氣,但很管用。

然后我們就把它還回去:

C#

return result;

 

所以整個(gè)函數(shù)看起來是這樣的:

C#

[FunctionName("Form")]brpublic static HttpResponseMessage Form(br    [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,br    ILogger log, ExecutionContext context)br{brbr    string indexPage = File.ReadAllText(context.FunctionAppDirectory + "/www/index.html");brbr    var result = new HttpResponseMessage(HttpStatusCode.OK);brbr    result.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");

 

因?yàn)槲覀円脒@個(gè)需要包含在構(gòu)建中的外部文件(index.html) ,所以需要將它添加到我們的。Csproj 文件。在 ItemGroup 中,添加以下代碼:

HTML

<None Update="wwwindex.html">br     <CopyToOutputDirectory>Always</CopyToOutputDirectory>

 

我在其他文件發(fā)布設(shè)置中添加了我的:

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

保存它,讓我們?cè)俅卧诒镜剡\(yùn)行 Azure 函數(shù):

Shell

func start

 

讓我們看看它是如何工作的。

測(cè)試我們的前端

 

現(xiàn)在我已經(jīng)在本地啟動(dòng)并運(yùn)行了我的函數(shù),所以我可以打開一個(gè)網(wǎng)頁瀏覽器:

http://localhost:7071/api/Form

這就是它所有的榮耀:

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

我會(huì)輸入一個(gè)網(wǎng)址,

這是我的二維碼,臨時(shí)生成的,太棒了! !

把它部署到 Azure 上。

部署我們的應(yīng)用程序

 

所以我現(xiàn)在稱之為“應(yīng)用程序”,因?yàn)樗褪恰N覀円呀?jīng)超越了一個(gè)簡(jiǎn)單函數(shù)的預(yù)期功能,只是為了展示 Azure 函數(shù)的強(qiáng)大。我們來部署一下,看看它是如何工作的。

用 Azure CLI 輸入

Shell

az login

 

你會(huì)通過瀏覽器登錄到 Azure。

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

在你的 Azure 控制臺(tái)中,創(chuàng)建一個(gè)新的 Azure 函數(shù)應(yīng)用程序,你可以給它取任何你喜歡的名字。

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

選擇發(fā)布為代碼,并使用下面的運(yùn)行時(shí)堆棧。

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

我會(huì)選擇 Windows 和消費(fèi)(無服務(wù)器)模式:

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

我將創(chuàng)建一個(gè)新的存儲(chǔ)帳戶,然后按“查看并創(chuàng)建”

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

把你的細(xì)節(jié)記下來:

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

現(xiàn)在我們需要用 Azure CLI 發(fā)布。我們將通過使用 func 命令并指定我們想要發(fā)布一個(gè)蔚藍(lán)色的 function 應(yīng)用程序的名稱來做到這一點(diǎn),我們將使用“-nozip”來告訴命令我們不是在部署應(yīng)用程序的 zip,而是源代碼。

Shell

func azure functionapp publish qrcodegen --nozip

 

你應(yīng)該看看這樣的東西,當(dāng)它完成的時(shí)候。

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

你將需要登錄到你的 Azure 門戶,加載功能應(yīng)用程序并選擇“配置”。

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

然后找到 WEBSITE _ RUN _ FROM _ PACKAGE 并將值設(shè)置為0。這將允許我們的函數(shù)在已發(fā)布的文件中運(yùn)行。

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

我們來看看!

在 Azure 上運(yùn)行應(yīng)用程序

部署之后,您應(yīng)該會(huì)看到如下屏幕:

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

“表單”URL 將顯示我們函數(shù)的用戶界面:

用 Azure 函數(shù)構(gòu)建 QR 碼生成器

 

你可以在你的網(wǎng)站,并創(chuàng)建一個(gè)二維碼從它!

我們自己的二維碼生成器100% 運(yùn)行 Azure 函數(shù)。

結(jié)論

 

如果你一直在跟進(jìn),謝謝你堅(jiān)持下來!現(xiàn)在您有了一個(gè)很酷的項(xiàng)目,并且對(duì) Azure 函數(shù)有了更好的了解。此項(xiàng)目的完整源代碼位于此處。

提供網(wǎng)站服務(wù)并不是 Azure 功能的設(shè)計(jì)目的,但我希望這是一個(gè)完整的解決方案,以支持 Azure 功能。沒有服務(wù)器,沒有數(shù)據(jù)庫,并且您不需要跟蹤多個(gè)服務(wù)。

我們學(xué)習(xí)了 Azure 函數(shù)的工作原理以及它們的簡(jiǎn)單性。我們?cè)谶@里寫的代碼不多!我們學(xué)會(huì)了如何生成二維碼。NET 庫,構(gòu)建一個(gè)迷你應(yīng)用程序并將其部署到云中。我想盡可能簡(jiǎn)單地介紹一下。如果您正在構(gòu)建一個(gè)“真正的”應(yīng)用程序,以下是我的建議:

  • 在 Azure 靜態(tài) Web 應(yīng)用程序或類似服務(wù)上托管前端
  • 檢查輸入時(shí)出錯(cuò)
  • 優(yōu)雅的錯(cuò)誤處理和日志記錄
  • 將圖像推入存儲(chǔ)器以便以后檢索
  • 設(shè)計(jì) API,以便其他類型的應(yīng)用程序也可以使用它

分享到:
標(biāo)簽:Azure
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定