大家好,我是山海师。某天,我在逛论坛的时候,忽然一股神秘的力量袭来,眼前一黑晕了过去……等我醒过来的时候,我发现我成了一名城管!!现在我正在追赶一个叫【老狼】的摊贩,我隐约觉得只要我抓到他,就能出任CEO,迎娶白富美,从此走上人生巅峰想想心里还有点小激动 在追赶的过程中,脑中忽然闪过一道白光,写下了这篇帖子
实际开发中往往需要对接一些第三方的api接口,这些第三方的服务基本上也都有提供出完整的接口文档,但是不少同学都表示看不懂这些文档
看不懂就封装不来,就得到处求人帮忙封装代码,这无疑拖慢了开发进度,加大了开发成本,钱包表示不答应。
这篇帖子就是来简单的说明下接口文档要怎么看?
|
用百度AI的通用文字识别OCR文档来做范例
一份文档主要由这么几个部分组成 1、请求方法 2、请求的URL 3、请求的Header 4、请求内容 5、返回内容
|
不同文档可能存在不同的描述,但是都是大同小异触类旁通请求方法常见的方法有
Get 和
Post,对应的按键上的命令就是
Url.HttpGet 和
Url.HttpPost范例中用的方法就是 Post
此外还有
Put Delete Option 等等方法,这类方法在国内的api中不是很常见,按键官方命令中暂时也不支持
请求Url这个顾名思义就是要请求的网址了
范例中请求的地址就是
https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic对应按键命令 Url.HttpPost 中的 url 参数
范例中还有一个名为
access_token 的Url参数,是需要合并写到请求网址上,使用 ? 来连接参数以及值,所以完整的请求Url是这个
- Dim access_token = "你的access_token的值"
- data["url"] = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=" & access_token
复制代码 具体的参数的值就按照文档说明去获取就行多个参数之间用 & 符号连接:key1=value1&key2=value2
请求Header每个http的请求都会附带上一些Header信息以便对请求进行一些信息的说明
范例中的请求头
Content-Type 就表示请求的内容使用 x-www-form-urlencoded 方式
在按键命令中只要附带上这个Header参数就行:- Dim data = {null}
- Dim access_token = "你的access_token的值"
- data["url"] = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=" & access_token
- data["header"] = {"Content-Type":"application/x-www-form-urlencoded"}
- Url.HttpPost(data)
复制代码 请求内容这里就是指要发送给服务器具体的信息,请求头中
Content-Type 的值决定了请求内容是什么格式
application/x-www-form-urlencoded:以key=value的方式经过url编码后发送 multipart/form-data:以表单的形式发送数据到服务器,这种类型可以发送文件 application/json:以JSON字符串的格式发送数据到服务器
|
范例中的请求用的就是
application/x-www-form-urlencoded 类型,所以需要把我们要传入的参数和值用key=value的形式连接起来
代码如下:- Dim data = {null}
- Dim access_token = "你的access_token的值"
- data["url"] = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=" & access_token
- data["header"] = {"Content-Type":"application/x-www-form-urlencoded"}
- data["data"] = "image=https://wx3.sinaimg.cn/orj360/0033ImPzly1gzolsnlz72j60u01cvjwp02.jpg"
- Url.HttpPost(data)
复制代码 返回内容常见的api返回是JSON格式的字符串,我们在读取了返回自己用Cjson命令来把字符串转换成键值表来使用
- Import "Cjson"
- Dim data = {null}
- Dim access_token = "你的access_token的值"
- data["url"] = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=" & access_token
- data["header"] = {"Content-Type":"application/x-www-form-urlencoded"}
- data["data"] = "image=https://wx3.sinaimg.cn/orj360/0033ImPzly1gzolsnlz72j60u01cvjwp02.jpg"
- Dim t
- Dim ret = Url.HttpPost(data)
- If ret <> "" Then
- t = Cjson.Decode(ret)
- TracePrint t["words_result"][1]["words"]
- End If
复制代码我们在获取到返回值后最好先进行判断一下是否为空,防止请求失败返回空后直接进行cjson转换报错。
当然,也有部分的api返回的是普通的html的内容,这个可以具体参考api的文档说明来做相应的处理就好了。
当写完这篇帖子的时候,我看了下时间,发现消耗了我足足一分钟!!看来我要抓紧时间去追赶小摊贩了,下次有空再来写第二篇