AskQL - 次世代のWeb API用クエリ言語
Web APIの歴史としてはREST APIが大きな転換期になったと思われます。10年以上に渡って使われ続けていますが、徐々に向き不向きが出てきました。そんな中、ここ数年はGraphQLに注目が集まっています。 今回紹介するのはさらに次世代のWeb APIともいえそうなAskQLを紹介します。askを冠につけたクエリ言語になります。
AskQLの使い方
AskQLでは ask 〜といった形式で記述します。
const askql = require('askql');
(async () => {
const result = await askql.runUntyped(
{ resources: askql.askvm.resources },
askql.parse("ask { 'hello world!' }")
);
console.log(JSON.stringify(result, null, 2));
})();
例えばクエリの例です。検索条件を指定したり、関数やテキスト変換を含めたりできます。
ask {
query {
firstField: otherField
secondField :fun2(34, 'adfs', [])
thirdField :fun3(fun2(34, 'adfs', []))
upperCaseFullName: fullName :firstName :concat(' ', lastName) :toUpperCase
}
}
検索条件の指定例です。whereを使います。
ask {
query {
friends::knex:where({ email: 'hi@example.com' }) {
firstName
lastName
}
}
}
AskQLはFacebookとGoogleの元従業員の人たちが開発しています。GraphQLでは解決できなかった問題をAskQLで解決しようということでしょう。クエリにJavaScriptのコードが書けますが、evalとは異なりセキュリティにも気を配られているとのことです。AskQLを実装するサーバの言語がJavaScriptに限定されてしまいそうなのが気になりますが、覚えておきたいソフトウェアです。
AskQLはTypeScript製のオープンソース・ソフトウェア(MIT License)です。
AskQL - Write flexible distributed software easier and faster than ever xFAANG/askql: AskQL is a query language that can express any data request