シンプルなhttp Azure関数をいくつか構築しようとしています。 JSON本体を含むWebアプリケーションからPOSTを受け取り、それをCosmosDB(DocumentDB)のドキュメントとして保存します。
HttpTrigger Azure関数appからCosmos DBにデータを保存するには、私の側でうまく動作する次のサンプルコードを参照してください。
using System.Net;
public static HttpResponseMessage Run(HttpRequestMessage req, out object taskDocument, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
MyData md=req.Content.ReadAsAsync<MyData>().Result;
taskDocument = new {
name = md.name,
task = md.task,
duedate = md.duedate
};
if (name != "") {
return req.CreateResponse(HttpStatusCode.OK);
}
else {
return req.CreateResponse(HttpStatusCode.BadRequest);
}
}
public class MyData{
public string name { get; set;}
public string task { get; set;}
public string duedate { get; set;}
}


他のデータベースからその文書を読み取り、JSONとして返すパラメータを持つGET要求を送信します。
Cosmos DBからデータを取得し、Azure関数app経由でJSONとして返すには、次のサンプルを参照してください。
function.json
{
"bindings": [
{
"authLevel": "function",
"name": "req",
"type": "httpTrigger",
"direction": "in",
"route": "documents/{name}"
},
{
"name": "$return",
"type": "http",
"direction": "out"
},
{
"type": "documentDB",
"name": "inputDocument",
"databaseName": "xxxdocumentdbtest",
"collectionName": "testcoll",
"sqlQuery": "SELECT * FROM c where c.name = {name}",
"connection": "xxxx_DOCUMENTDB",
"direction": "in"
}
],
"disabled": false
}
run.csx
#r "Newtonsoft.Json"
using System.Net;
using Newtonsoft.Json;
public static HttpResponseMessage Run(HttpRequestMessage req, IEnumerable<MyData> inputDocument, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
MyData md = inputDocument.FirstOrDefault();
log.Info(md.task);
var val = JsonConvert.SerializeObject(md);
return req.CreateResponse(HttpStatusCode.OK, val);
}
public class MyData{
public string name { get; set;}
public string task { get; set;}
public string duedate { get; set;}
}
