Serverless 初體驗:快速開發與部署一個Hello World(Java版)


昨天被阿里雲的這個酷炫大屏吸引了!

我等85后開發者居然這么少!挺好奇到底什么鬼東西都是90、95后在玩?就深入看了一下。

這是一個關於Serverless的體驗活動,Serverless在國內一直都處於不溫不火的狀態,所以很多開發者其實都不太了解Serverless到底是啥!

如果你也有這樣的好奇,那么可以跟我一樣來體驗一下,簡單的寫個Hello World,有個最直觀的感受這個充滿未來感產品吧!

P.S. 參加活動,加入釘釘群還能每天抽獎一次,有機會贏取AirPods、高達PG模型(我喜歡的)、Cherry機械鍵盤等豐富大禮哦!

如何參與

-【官方】活動主頁:https://developer.aliyun.com/topic/yiqi/hol?utm_content=g_1000180354
-【官方】通關寶典:https://help.aliyun.com/document_detail/181573.html

官方文檔還是如其他阿里項目一樣的有待提高(lan)....

如果你最自己的探索能力有足夠信心,可以直接通過官方文檔來試試。

如果想少踩坑,可以看我下面寫的超細致通關寶典,完成一個Java版本的Hello World!

第一步:進入產品列表,點擊創建應用

第二步:選擇“空應用”標簽

  • Serverless應用服務器選擇:“函數計算FC”
  • 開發語言選擇:Java

第三步:填寫應用名稱、應用介紹,自己定義就好

第四步:點擊新建的應用卡片中的“開發部署”按鈕

第五步:新建 helloworld.java

內容如下:

package com.alibaba.serverless.helloworld;

import java.io.UnsupportedEncodingException;
import java.util.UUID;

import com.aliyun.fc.runtime.Context;
import com.aliyun.fc.runtime.FunctionComputeLogger;
import com.aliyun.fc.runtime.FunctionInitializer;
import com.aliyun.fc.runtime.PojoRequestHandler;
import com.aliyuncs.utils.Base64Helper;

/**
 * 對應到部署路由中的函數名:
 * com.alibaba.serverless.helloworld.helloworld::handleRequest
 */
public class helloworld implements FunctionInitializer, PojoRequestHandler<ApiGwRequest, ApiGwResponse> {

    /*
     * 雲函數運行時初始化時的回調函數。
     */
    @Override
    public void initialize(Context context) {
        FunctionComputeLogger logger = context.getLogger();
        logger.debug(String.format("RequestID is %s %n", context.getRequestId()));
    }

    /*
     * Web雲函數處理入口,每次調用時的入口。
   * @param request 每次請求的所有信息都在request中
     */
    @Override
    public ApiGwResponse handleRequest(ApiGwRequest request, Context context) {
    FunctionComputeLogger logger = context.getLogger();
    
    // 讀取請求對象
    String requestPath = request.getPath();
    String bodyContext = "";
    if (requestPath.startsWith("")) {
      bodyContext = "你好,世界!";
    }
    
    // 構建返回對象
        ApiGwResponse response = new ApiGwResponse();
        response.getHeaders().put("responseHeader", "testValue");
        response.getHeaders().put("Content-type", "text/html; charset=utf-8");
        boolean isBase = false;
        if ( isBase ) {
            try {
                bodyContext = Base64Helper.encode(bodyContext, "UTF-8");
            } catch (UnsupportedEncodingException e) {
                isBase = false;
            }
        }
        response.setBody( bodyContext );
        response.setBase64Encoded( isBase );
        response.setStatusCode(200);

        logger.info("Response返回:" + bodyContext );
        return response;
    }
}

第六步:按下圖操作,提交代碼

第七步:部署應用到日常環境

點擊左側工具欄的第一個圖標,進入部署界面,點擊“添加一條路由”。

圖中2部分的內容為: com.alibaba.serverless.helloworld.helloworld::handleRequest,對應的就是之前創建的 helloworld.java 中的handleRequest法,意思就是/helloworld請求會被這個類中的handleRequest來處理。

注意,請求方法要設置為POST,后面會說為什么!

第八步:測試/helloworld接口

在部署標簽邊上就有一個測試工具,輸入用戶路徑/helloworld,點擊測試就可以發起請求了,獲得結果如下圖所示:

回過頭來看一下代碼,對用的body內容:

這個測試工具是不是總覺得有點怪?!是的,居然沒有HTTP Request Method的選擇,這個請求默認都是用POST來發的,所以在上一步中我們配置了/helloworld為POST請求,不然這里就不會成功。看官方寶典的兄弟,發現這個坑了嗎?

怎么樣的?你的第一次Serverless之旅還算順利嗎?

點擊這里一起來試試這種未來的開發方式吧

本文首發:Serverless 初體驗:快速開發與部署一個Hello World(Java版),轉載請注明出處。
歡迎關注我的公眾號:程序猿DD,獲得獨家整理的學習資源和日常干貨推送。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM