昨天被阿里雲的這個酷炫大屏吸引了!
我等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,獲得獨家整理的學習資源和日常干貨推送。