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

1447 篇文章 12 订阅
1447 篇文章 7 订阅

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

创建API key

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

创建云函数

打开
https://console.cloud.tencent.com/scf/list?rid=8&ns=default
点创建云函数, 选java平台
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

打开IDEA 创建Gradle java工程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
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类,
在这里插入图片描述

写mainHandler(APIGatewayProxyRequestEvent event)函数
如下:

public class Main {
    public String mainHandler(APIGatewayProxyRequestEvent event) {
       //Map<String, String> 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(...略);
}

具体这里就不演示了

填执行方法

在这里插入图片描述

打包项目为zip

回到工程
在右侧工具类 点击build
在这里插入图片描述

然后生成一个zip文件(看我路径)
在这里插入图片描述

上传源码

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

在这里插入图片描述

测试

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

添加触发方式

在这里插入图片描述
选api网关 方式
在这里插入图片描述
其它默认 点保存即可
最后生成一个地址
在这里插入图片描述

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

其它:

创建触发规则时你会发现 可以做定时任务 什么的 对应的类名以api网关为例APIGatewayProxyRequestEvent 类,
其它功能 看源码自己理解:
在这里插入图片描述

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

补充(20191223)

我看了sdk源码, 发现API网关与官网的模板有关, 但上图中的sdk源码中没写触发方式里的自动任务怎么实现
其实很简单
就是先新建模板
在这里插入图片描述
选对应的触发事件, 如定时器
在这里插入图片描述
此时会出现一个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 强行设置
其余就没什么了.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值