• AS400 API 从零到一的整个历程


    简单的分享,如果有不一样的见解可以一起讨论

    1)AS400上安装对应的577ODG1 这个软件

    如果你不知道有没有装,你可以通过

    GO LICPGM 这个命令,10 去看到哪些安装的软件

    图片

    怎么安装具体如下:

    1. To install the libraries, run the command go licpgm

    图片

    2. Select option 11 to install a Licensed Program and install option 39

    图片

    如果发现有IBM HTTP Server For I

    2)启动 HTTP 服务,这是基本要求。

    STRTCPSVR *HTTP HTTPSVR(*ADMIN)

    192.168.88.249 是AS400 的IP 地址

    http://192.168.88.249:2001/HTTPAdmin

    如果说你的User没有权限去登录Admin, 需要给User profile *ALLOBJ and *IOSYSCFG的权限去创建服务器

    图片

    图片

    因为Web服务是需要指定对应的user profile但是如果是个人的user profile是有密码过期的这样就会导致你的user 密码过期后面API 服务不能用了。所有要create 一个永久不过期的用户:

    CRTUSRPRF USRPRF(IWSREST02) PASSWORD(*NONE)

    图片

    图片

    3)服务器create 成功后接下来就是部署rest API 服务

    图片

    部署服务的时候可以选择SRVPGM  和 PGM

    Produce的形式:

    h nomain PGMINFO(∗PCML:∗MODULE)
    d ConvertTemp pr
    d tempIn 10 const
    d tempOut 10
    p ConvertTemp b export
    d ConvertTemp pi
    d tempIn 10 const
    d tempOut 10
    d tempI s 8P 2
    d tempO s 8P 2
    d value S 50A
    /free
    value = %STR(%ADDR(tempIn));
    tempI=%DEC(value:7:2);
    tempO = (5/9)∗(tempI - 32);
    value = %CHAR(tempO);
    tempOut = value;
    %STR(%ADDR(tempOut):10)=tempOut;
    /end-free
    p ConvertTemp e
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    PGM 的形式:

    /free
       ctl-opt *debug(yes) PGMINFO(∗PCML:*DCLCASE:∗MODULE);
       dcl-f custpf usage(*update) keyed                        
                             rename(TESTPFR:NEWNAME) USROPN ;
       dcl-s k1cust like(CUBK)  INZ(1);
       dcl-ds w1request INZ qualified;
          customer  char(10);
          customername char(10);
       end-ds W1reqeust;
       
       dcl-pi *n;
       
       // request
       customerds  likeds(w1request);
       //response
       statuscode int(5);
       end-pi;
       exsr sr100;
       eval *INLR = *ON;
       return;'
       // ================================================== 
       begsr SR100; 
           OPEN NEWNAME;
           eval k1cust = w1request.customer;  
           Chain  k1cust   NEWNAME;
           If %found(NEWNAME);
           eval custname =w1request.customername;
           update NEWNAME;
           eval statuscode = 200;
           else;
            eval statuscode = 400;
           endif;
           Close NEWNAME;
       endsr;   
       // ==================================================                       
    /end-free
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    但是记得如果说要让IWS 识别到对应的SRVPGM或者PGM

    是需要在 H Spec 定义,不然识别不到

    H PGMINFO(∗PCML:∗MODULE)

    图片

    API服务给到名字

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nKNKCH1T-1656494130334)(https://mmbiz.qpic.cn/mmbiz_png/WxKgPiboJnT3CMr74DI8WmNj5DDvcQHnQxwsCAdwevG10PbOdLmcnfDTcsREWcajaX0ic41R7zmibv2Ck1M8bibGdg/640?wx_fmt=png)]

    图片

    选择对应的方法

    图片

    加好library list

    图片

    部署成功

    图片

    属性显示 基本资源 URL:

    http://192.168.88.249:10021/web/services/fto

    停 WEB 服务

    ENDTCPSVR SERVER(*HTTP) HTTPSVR(IWSREST02)

    需要Debug API Job

    Subsystem QUSRWRK

    Job QZRCSRVS

    STRSRVJOB  去然后STRDBG debug 到对应的API 后台QZRCSRVS job,记得SRVPGM 是不可以Debug的,只要部署的时候是Program的时候才可以

    GET、POST、PUT、DELETE

    GET 和Delete 是只能用Path_Parm 或者query_Parm 是不可以用Body的

    图片

    说完了部署API 的服务,接下来就是需要对API服务进行SSL 的配置

    配置SSL/TLS设置

    配置机器使用SSL/TLS可以启用加密通信。这样做有助于防止数据在传输过程中被截获、破解或篡改。

    图片

    使用自签证书时的配置流程

    1. 创建和安装设备证书:

      IBM 主要是通过 iKeyman

    2. 启用SSL/TLS:

      配置SSL

    3. 重启服务器

      图片

    SSL的IBM 的SSL 主要是用iKeyman 生成 密钥:

    How do I extract certificates from key databases using the iKeyman utility?

    https://www.youtube.com/watch?v=aFUF8KAaMIQ

    How do I receive a signed certificate from a certificate authority using the iKeyman utility?

    https://www.youtube.com/watch?v=Wq1ftCAow9Y

  • 相关阅读:
    软件测试/测试开发丨Web自动化—capability参数配置 学习笔记
    element-ui在vue中如何实现校验两个复选框至少选择一个!
    编译安装Erlang+RabbitMQ
    测试踩坑 - 当已有接口(或数据库表中)新增字段时,都需要注意哪些测试点?
    图解|12张图告诉你MySQL的主键查询为什么这么快
    HashMap每次扩容时,为什么都必须是2的N次方?
    软件测试面试,一定要准备的7个高频面试题(附答案,建议收藏)
    MybatisPlus
    性能测试-性能监控分析与调优(三)《实战》
    windows安装mycat1.4
  • 原文地址:https://blog.csdn.net/weixin_41447442/article/details/125525972