分享一下自己对restAPI开发遇到的一些坑,还有一些个人见解

百中医 1月前 372

前言:近期单位刚采购这套系统,版本是A8,迫不及待地想研究api,毕竟希望通过OA系统发送一些数据统计,相信很多人和我一样,看到接口文档的时候就是一顿(芬芳),通过近一个星期的研究,目前暂时是做到了表单模板的发送,本帖旨在能和志同道合的同志交流经验,会不断更新自己的开发历程,说得不好的地方,请大神们轻喷。
本人的开发语言是python3.7,往后会附上代码。
最新回复 (9)
  • 百中医 1月前
    引用 2
    首先,文档中有提到,所有的rest操作都要有token才能操作,所以我们必须先想办法取到token。但是用我们普通账户是无法取到token的,具体的操作方法是:登陆系统管理员账号(我这儿是system)---点开“信息集成配置”---“REST用户管理”,新建一个用户并授权,我们只要记得登录名和密码,就可以开始尝试通过这个用户获取token了。
  • 百中医 1月前
    引用 3
    在获取token之前,我们先看一下RESTFull web service是否运行(我没留意这个东西是否关闭过),方法是打开http://{172.16.xxx.xxx}/seeyon/rest/application.wadl,我这儿打开的是xml格式的文本,有点像SOAP接口的wsdl,往下我们开始尝试获取token
  • 百中医 1月前
    引用 4
    获取token这一步,我着实走了不少弯路,原因是,这版本的系统的REST账户的密码只生成一次,我生成时居然没点“确定”来保存,提示一直是错误。
    然后就是,接口文档上第10行是用来混淆视听的吧……
    好了,言归正传,
    以下是我的请求头headers:{'Host': '172.16.xxx.xxx', 'Accept': 'application/json', 'Content-type': 'application/json', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0'}
    以下是我的请求数据 {'userName': 'xxxx', 'password': 'f350c753-7f45-4aef-8a1b-xxxxxxxxxx'}
    请求方式 http post
    url:http://172.16.xxx.xxx/seeyon/rest/token/

    我的python代码如下
    import requests #需要安装requests模块
    def getToken():
        header={'Host': '172.16.xxx.xxx', 'Accept': 'application/json', 'Content-type': 'application/json', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0'}   #header为dict
        body={'userName': 'xxxx', 'password': 'f350c753-7f45-4aef-8a1b-xxxxxxxxxx'}   #body为dict
        url="http://172.16.xxx.xxx/seeyon/rest/token/"
        result=requests.post(url=url,json=body,headers=header)
        return result.json()
    print(getToken())
    --------------------------------------------------------------
    运行的结果是
    {'bindingUser': None, 'id': '38287e4e-00a6-4a1d-b0a1-fxxxxxxxxx'}
    到此为止,我们已经获取到了我们想要的token





  • 百中医 1月前
    引用 5
    贴一个php代码,原理相同
    --------------------------------------------------------------
    <?php

    function getToken()
    {
        $headarr = array( 'Accept:application/json', 'Content-Type:application/json', 'User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0');
        $body = new stdClass();
        $body->userName = "xxxx";
        $body->password = "f350c753-7f45-4aef-8a1b-fxxxxxxxx";
        $url = "172.16.xxx.xxx/seeyon/rest/token/";
        $body = json_encode($body);
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headarr);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
        $result = curl_exec($curl);
        return json_decode($result);
    }
    var_dump(getToken());
    --------------------------------------------------------
    输出结果为:
    object(stdClass)#1 (2) {
      ["bindingUser"]=>
      NULL
      ["id"]=>
      string(36) "dd261684-1229-41db-9458-0xxxxxxxxxx"
    }
  • AizenSousek 1月前
    引用 6
    大兄弟为何要用Python或者是PHP来开发呢?其实RESTFUL有不少坑,后面我也会补上一些
  • kkdo 1月前
    引用 7
    good!
  • 百中医 1月前
    引用 8
    AizenSousek 大兄弟为何要用Python或者是PHP来开发呢?其实RESTFUL有不少坑,后面我也会补上一些
    emmm 主要是Java学得不好  相互学习
  • lmy850211 8天前
    引用 9
    兄弟,你做了附件上传了吗?
  • yige 2天前
    引用 10
    主要是太心急了
返回
发新帖