尝试使用chatgpt创建一个新的接口

发表时间: 2024-05-21 19:19

gpt

前几天开通了一个gpt账号,网上已经介绍非常多的信息了,自己也来试试gpt的强大功能。最近几天刚好在开发SSL证书相关的,来看看获取证书的开始时间和结束时间,就是证书的有效期。

开始

  • 输入如何通过java或者php代码来查询域名SSL证书的开始日期和结束日期,生成如图

(生成代码)

  • 没有java环境,没法测试,所以下面我直接使用php来测试,我官网安装的服务器就是php环境,非常方便测试,过去基本没有怎么接触过,能看懂一点吧,就是要的这个效果,O(∩_∩)O,生成的php代码如下:
    <?php
    $domain = "www.example.com";
    $port = 443;

    $g = stream_context_create(array("ssl" => array("capture_peer_cert" => true)));
    $r = stream_socket_client("ssl://$domain:$port", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $g);
    $cont = stream_context_get_params($r);
    $cert = openssl_x509_parse($cont["options"]["ssl"]["peer_certificate"]);

    $startDate = date(DATE_RFC2822, $cert['validFrom_time_t']);
    $endDate = date(DATE_RFC2822, $cert['validTo_time_t']);

    echo "Start Date: " . $startDate . "\n";
    echo "End Date: " . $endDate . "\n";
    ?>
  • 域名换成我自己的,直接执行,ok。

(执行结果)

  • 日期格式修改下,改成长日期格式

(显示日期格式)

  • 根据提示,date里面的格式修改下,执行

(修改日期格式)

  • 为了以后调用方便,我们把它做成接口,使用json把域名传入,再用json来得到证书的日期信息,输入如下:

(转接口)

  • 生成的代码如下:
    <?php
    header('Content-Type: application/json');

    function getSSLCertificateDates($domain) {
    $port = 443;
    $timeout = 30;

    $context = stream_context_create(["ssl" => ["capture_peer_cert" => true]]);
    $client = stream_socket_client("ssl://$domain:$port", $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $context);

    if ($client) {
    $params = stream_context_get_params($client);
    $cert = openssl_x509_parse($params["options"]["ssl"]["peer_certificate"]);

    $startDate = date('Y-m-d', $cert['validFrom_time_t']);
    $endDate = date('Y-m-d', $cert['validTo_time_t']);

    return [
    "domain" => $domain,
    "start_date" => $startDate,
    "end_date" => $endDate
    ];
    }
    else {
    return [
    "domain" => $domain,
    "error" => "Unable to retrieve certificate"
    ];
    }
    }

    // 获取输入的JSON数据
    $input = file_get_contents('php://input');
    $data = json_decode($input, true);

    if (isset($data['domain'])) {
    $domain = $data['domain'];
    $result = getSSLCertificateDates($domain);
    echo json_encode($result);
    }
    else {
    echo json_encode(["error" => "Invalid input"]);
    }
    ?>
  • 只是复制,使用,通过在线post来测试如下:

(接口测试完成)

  • 到这里完美完成,一点都不用知道php都可以,一个实用的例子就这样完成,前后2,3分钟。

为了后面实际调用,我后面还让gpt加上了异常处理,返回错误信息,加了error和errormsg两项。

实际运行效果

  • 加了异常保护,把域名少输入一个w之后,执行效果:

(执行效果)

赶紧吧,上面使用的是免费版,还没有使用最新带o的版本。