Web开发 腾讯云-云函数(Java版) 低成本搭建轻量级服务器

腾讯云是免费的, 但有额度, 貌似100万请求来着… 做个追剧更新爬虫什么的自用 还是可以的!
开始:

创建API key

https://console.cloud.tencent.com/cam/capi
(貌似不需要这一步,因为后面暂时用不到)

创建云函数

打开
https://console.cloud.tencent.com/scf/list?rid=8&ns=default
点创建云函数, 选java平台
Web开发 腾讯云-云函数(Java版) 低成本搭建轻量级服务器_第1张图片
Web开发 腾讯云-云函数(Java版) 低成本搭建轻量级服务器_第2张图片
Web开发 腾讯云-云函数(Java版) 低成本搭建轻量级服务器_第3张图片

打开IDEA 创建Gradle java工程

在这里插入图片描述
Web开发 腾讯云-云函数(Java版) 低成本搭建轻量级服务器_第4张图片
Web开发 腾讯云-云函数(Java版) 低成本搭建轻量级服务器_第5张图片
next next … finish

修改build.gradle

创建完成后 添加 sdk以及打包zip脚本, 等会要打包提交到服务器

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile('com.tencentcloudapi:scf-java-events:0.0.1')
    // compile fileTree(dir: 'jars', include: '*.jar')
}

apply plugin: 'java'

task buildZip(type: Zip) {
    from compileJava
    from processResources
    into('lib') {
        from configurations.runtime
    }
}

build.dependsOn buildZip

tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}

新建example包名
新建Main类,
Web开发 腾讯云-云函数(Java版) 低成本搭建轻量级服务器_第6张图片

写mainHandler(APIGatewayProxyRequestEvent event)函数
如下:

public class Main {
    public String mainHandler(APIGatewayProxyRequestEvent event) {
       //Map queryString = event.getQueryString();
        //传入的参数这样判断
       // if (queryString.containsKey("keyword")) {
        //    try {
        //        return query(queryString.get("keyword"));
         //   } catch (Exception e) {
        //        e.printStackTrace();
        //        return e.getMessage();
         //   }
       // }
        return  event+"";//打印 event, 获取参数见上面的注释
    }
}

注意 代码里可以执行一个http请求操作,这样就可以实现服务爬虫什么的
就普通的http get post即可 , 记得不可使用异步支持, 必须同步执行
如:

public String mainHandler(APIGatewayProxyRequestEvent event) {
        return HttpUtil.request(...);
}

具体这里就不演示了

填执行方法

Web开发 腾讯云-云函数(Java版) 低成本搭建轻量级服务器_第7张图片

打包项目为zip

回到工程
在右侧工具类 点击build
Web开发 腾讯云-云函数(Java版) 低成本搭建轻量级服务器_第8张图片

然后生成一个zip文件(看我路径)
Web开发 腾讯云-云函数(Java版) 低成本搭建轻量级服务器_第9张图片

上传源码

然后回到云函数平台选择上传这个zip
记得要选择模板为 API网关, 保存, 界面会刷新 , 步骤如图

Web开发 腾讯云-云函数(Java版) 低成本搭建轻量级服务器_第10张图片

测试

最后点击测试 看日志是否输出想要的内容

添加触发方式

Web开发 腾讯云-云函数(Java版) 低成本搭建轻量级服务器_第11张图片
选api网关 方式
Web开发 腾讯云-云函数(Java版) 低成本搭建轻量级服务器_第12张图片
其它默认 点保存即可
最后生成一个地址
Web开发 腾讯云-云函数(Java版) 低成本搭建轻量级服务器_第13张图片

这个地址直接指向刚才开发的java代码的 mainHandler 函数
可以用自己的域名做域名解析到这个腾讯官方的域名

其它:

创建触发规则时你会发现 可以做定时任务 什么的 对应的类名以api网关为例APIGatewayProxyRequestEvent 类,
其它功能 看源码自己理解:
Web开发 腾讯云-云函数(Java版) 低成本搭建轻量级服务器_第14张图片

(腾讯云官网没有java 版的sdk文档以上都是我摸索出来的 (php python nodejs倒是有很多文档, 包括例子, 真的坑))

补充(20191223)

我看了sdk源码, 发现API网关与官网的模板有关, 但上图中的sdk源码中没写触发方式里的自动任务怎么实现
其实很简单
就是先新建模板
Web开发 腾讯云-云函数(Java版) 低成本搭建轻量级服务器_第15张图片
选对应的触发事件, 如定时器
Web开发 腾讯云-云函数(Java版) 低成本搭建轻量级服务器_第16张图片
此时会出现一个json, 把这个json转java对象即可
如:


public class AutoJob {

    //官网例子有问题, 这里需要写注解JsonProperty
    //强制设置json类型大小写开头
    //(不设置的话, 解析错误, 变成小写开头不知道为什么)
    @JsonProperty("Type")
    private String Type;
    @JsonProperty("TriggerName")
    private String TriggerName;
    @JsonProperty("Time")
    private String Time;
    @JsonProperty("Message")
    private String Message;

    public String getType() {
        return Type;
    }

    public void setType(String Type) {
        this.Type = Type;
    }

    public String getTriggerName() {
        return TriggerName;
    }

    public void setTriggerName(String TriggerName) {
        this.TriggerName = TriggerName;
    }

    public String getTime() {
        return Time;
    }

    public void setTime(String Time) {
        this.Time = Time;
    }

    public String getMessage() {
        return Message;
    }

    public void setMessage(String Message) {
        this.Message = Message;
    }
}

注意 一开始我没加@JsonProperty 会导致解析出问题, 官网压根没说, 真的坑
其它功能也是一样的, 就是找到json, 然后转对象即可, 注意如果首字母大写就要用@JsonProperty 强行设置
其余就没什么了.

你可能感兴趣的:(Web开发,python,js,java)