iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 1
0
自我挑戰組

學學WEB開發的各種技術及框架系列 第 1

用Ballerina寫web service

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20190916/20110296DrkvRkQMVt.png
官方網站
Ballerina是一種開源雲原生的程式語言(用java寫出來的,以後應該會慢慢用Ballerina自己寫出來吧?!),
他把網路中的客戶端client、服務service、資源resource、監聽器listenr的概念直接抽象到語言層面來,所以寫起網路服務會變得更方便。
https://ithelp.ithome.com.tw/upload/images/20190916/201102962WvIakKabw.png
用Ballerina寫出來的code都能轉換成一張序列圖,讓code的用途一目了然,我覺得這個功能還滿酷的,只是我還不知道怎麼轉換...。
https://ithelp.ithome.com.tw/upload/images/20190916/20110296vGfIzfvet3.png

而且最近1.0版本才剛剛正式發布,就來寫個hello world吧!

import ballerina/http;
import ballerina/io;

# 定義一個 API 服務
# 設定監聽端口為 `9090`
service helloworld on new http:Listener(9090) {

    # 定義一個讓別人可以請求護取的資源函數
    # 存取路徑:`/hello/sayHello`.
    #
    # + caller - 代表調用這個資源的客戶端
    # + request - 請求
    resource function sayHello(http:Caller caller, http:Request request) {

        // resource資源函數收到請求後,回覆一個訊息給caller客戶端
        error? result = caller->respond("Hello Ballerina!");
        if (result is error) {
            io:println("Error in responding: ", result);
        }
    }
}

然後執行
https://ithelp.ithome.com.tw/upload/images/20190916/20110296jhf0kK1ITn.png

再來是做客戶端
他說要寫在main函數裡,
然後用check關鍵字,就可省略error的處理,這只是方便開發,在生產環境裡還是要做error的處理。

import ballerina/http;
import ballerina/io;

public function main() returns error? {
    http:Client helloClient = new("http://localhost:9090/hello");
    http:Response helloResp = check helloClient->get("/sayHello");
    io:println(check helloResp.getTextPayload());
}

最後執行客戶端的程式他就會回傳: Hello Ballerina!
https://ithelp.ithome.com.tw/upload/images/20190916/20110296K5mLoLp85W.png
有正常回傳,但是好像有bug.......明明執行的是客戶端但是他卻error說9090已經被佔用了??

然後官方範例還有放一個查詢座標的日出時間的服務,程式碼短耶! 感覺好方便喔

import ballerina/http;
import ballerina/io;

public function main() returns error? {
    http:Client sunriseApi = new("http://api.sunrise-sunset.org");
    http:Response sunriseResp = check sunriseApi->get("/json?lat=6.9349969&lng=79.8538463");
    json sunrisePayload = check sunriseResp.getJsonPayload();
    io:println(sunrisePayload);
}```

下一篇
用Ballerina寫grpc
系列文
學學WEB開發的各種技術及框架10
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言