2017-09-20 80 views
4

我已經寫了3個功能如下如何在Azure的功能

  1. 在數據庫中創建用戶
  2. 獲取用戶數據庫
  3. 過程用戶調用另一個函數與

在[ 3]功能,我會打電話[2]功能讓用戶使用Azure功能url如下: -

https://hdidownload.azurewebsites.net/api/getusers

是否有任何其他方式調用Azure函數與另一個Azure函數沒有完整路徑如上?

+0

功能在編程launguage或框架? –

+0

您可以在耐用功能中使用「模式#1:功能鏈」。 https://docs.microsoft.com/en-us/azure/azure-functions/durable-functions-overview。或者您可以創建可用於各種功能的共享代碼http://developer123.blogspot.in/2018/02/share-class-and-methods-among-azure.html – Annie

回答

3

功能應用程序中沒有任何內置功能可以在不實際進行HTTP調用的情況下從其他功能調用一個HTTP功能。

對於簡單的使用情況,我會堅持使用完整的URL調用。

對於更高級的工作流程,請看Durable Functions,特別是Function Chaining

0

我沒有找到任何好的來源,我做了下面,它工作正常。

調用其他功能用這個URL,以下格式:

https://my-functn-app-1.azurewebsites.net/some-path-here1?code=123412somecodehereemiii888ii88k123m123l123k1l23k1l3==

在Node.js的,我叫如下:

let request_options = { 
     method: 'GET', 
     host: 'my-functn-app-1.azurewebsites.net', 
     path: '/path1/path2?&q1=v1&q2=v2&code=123412somecodehereemiii888ii88k123m123l123k1l23k1l3', 
     headers: { 
      'Content-Type': 'application/json' 
     } 
}; 
require('https') 
    .request(
     request_options, 
     function (res) { 
       // do something here 
     }); 

曾與無問題。
它應該對其他編程語言的工作方式類似。
希望這會有所幫助。

0

你不能直接這樣做,但你有兩個選擇:

  1. 將HTTP請求發送到另一個功能的公共URL。
  2. 將消息放入Azure隊列並讓其他Azure功能處理它。 (Microsoft建議這個解決方案)

對於第一種選擇,在C#中,你可以做它像這樣:

[FunctionName("RequestImageProcessing")] 
public static async Task RequestImageProcessing([HttpTrigger(WebHookType = "genericJson")] 
    HttpRequestMessage req) 
{ 
    using (var client = new HttpClient()) 
    { 
     string anotherFunctionSecret = ConfigurationManager.AppSettings 
      ["AnotherFunction_secret"]; 
     // anotherFunctionUri is another Azure Function's 
     // public URL, which should provide the secret code stored in app settings 
     // with key 'AnotherFunction_secret' 
     Uri anotherFunctionUri = new Uri(req.RequestUri.AbsoluteUri.Replace(
      req.RequestUri.PathAndQuery, 
      $"/api/AnotherFunction?code={anotherFunctionSecret}")); 

     var responseFromAnotherFunction = await client.GetAsync(anotherFunctionUri); 
     // process the response 
    } 
} 

[FunctionName("AnotherFunction")] 
public static async Task AnotherFunction([HttpTrigger(WebHookType = "genericJson")] 
HttpRequestMessage req) 
{ 
    await Worker.DoWorkAsync(); 
}