主要是涉猎一些课外知识.
说来这个东西,语法官方花了一页全部说完.
###
Meet Storyscript
###
# Pull data from a microservice
output = service action key:value
output = team/service action key:value
# Discover and create services in the Storyscript Hub
# Call a function
output = function_name(key:value)
# A Storyscript function
# or another programming language
# Call type methods
output = variable.mutation(key:value)
# Event streaming microservice
when service action event key:value as output
... # run this block for every event
# Types
string = "Hello"
integer = 1
number = 1.3
bool = true
list = ["a", "b", "c"]
map = {"apple": "red", "banana": "yellow"}
regexp = /^foobar/
empty = null
time = 1d35m
# Destructuring
{ apple, banana } = map
# apple = "red", banana = "yellow"
# Conditions
if one > 1
# ...
else if one == 1
# ...
else
# ...
# Loops
foreach list as item
# ...
while true
# ...
# Functions
function name input:int returns int
# ...
return input
name(input:1)
# >>> 1
由于官方给的上手Hello World实在太简单了,基本就是输出,实际上就http服务而言,都有很多功能,比如下面代码获取某个get参数.
http server as server
when server listen method: "get" path: "/" as r
r write content: r.query_params["src"]
运行结果大致如下.
做一个简单计算器,涉及了类型转换,创建了一个函数.
function add a:int b:int returns int
return a + b
http server as server
when server listen method: "get" path: "/" as r
result = add(a:r.query_params["srcA"] as int b:r.query_params["srcB"] as int)
r write content: result as string
运行结果:
当然我们可以依赖别人的库,也能自己按OMG写,我们可以依赖数据库运行某些东西.
比如依赖这个编码的库:https://hub.storyscript.io/service/base64/guide#encode
如果你要封装自己的功能,只要符合OMG格式,也是可以来套用的,主要是一个脚本.
http server as server
when server listen method: "get" path: "/" as r
query_content = r.query_params["src"]
encoded = base64 encode content: query_content as string
decoded = base64 decode content: encoded
r write content: decoded
要自己做服务,请参考:
https://microservice.guide/introduction/overview/
https://github.com/omg-services/uuid
当然你也可以当serverless用,只不过这是两码事.