golangでRestAPI + Sedna XML Databaseからデータ取り出し



golangでRestAPI + Sedna XML Databaseからデータ取り出し

golangでRestAPI + Sedna XML Databaseからデータ取り出し

JSONでのリクエストは、直接Rootフォルダ以下のサブフォルダで授受できます
GetでもPostでも、そのフォルダに配置されたXQueryへJSON文字列がマップされ、変数として扱われます
その後XQueryはSedna XML Databaseで実行されます
結果はXMLとなりますが
GolangでJSON化され、呼び出し元に戻されます
上記では、栄養データベースをXML化し、Sedna XML Databaseでバルクロードしてあり、JSONリクエストで検索をかけ、その結果をHTML側のJavaScriptで表示しているところです
XMLからJSON化することはXQuery3系では可能なのですが、Sedna XML DatabaseではXQuery1系ですので、その機能は使えません
また、XQuery3系であったとしても、容易にはXMLからJSONへの変換は容易ではなく、とくにXMLには配列という概念がないため、JSON化に際してはプロパティにArrayを用意することで、強制的に配列化するというルールをつけています
本フレームワークでは、Javaで言うところのEntityは無く、Actionもサーブレットもありません
あるのは、XQueryとその出力結果のみです
Sedna XML Databaseの機能として、C言語によるプラグインの作成が可能です
これにより、QRコードを作成し、OpenCVを使って画像化し、Base64エンコードをしてXMLのCDATAセクションに入れて戻し、GolangでJSON化して戻すという事も行えますし、未実装ですが、プリンタへ出力するようなことも出来ます
XQueryには、更新系のクエリが存在しませんが、結果XMLを特別なエンベロープで囲うことにより、Sedna XML Database用の更新系XQueryも実行できるようになっています
ためしにレシピサイトを作っていますが、ページの編集、保存、検索など、Rootフォルダ以下のサブフォルダに配置したXQueryのみで実装可能でした