apipost调试接口

接口的事情终于可以告一段落了,从去年就开始搞这个,一开始一窍不通,后来自己搞了个简单的前端和后端,但是不符合对方的要求,视频会议开了不知道多少个,直到对方提示我们用apipost,这才知道对方的要求,明明这么简单的一个事情,居然耗费这么多精力,不过也算学到了一点东西吧。

下面就记录一下在接口工作中我最后阶段的一点学习。

一、apipost的使用

 对方给我发送了一个json文件,我一开始不明所以,但是看网上的一些教程,就导入了一下,然后这个项目就自动显示出来了,是两个raw格式的json文件。

92dd783da3544ac790a26dbdf2f78a87.png

使用其实也很简单,在POST那里输入URL,点击发送,就可以把请求传输给后端,如果请求成功的话就会返回一个响应。

如果自己想创建一个接口,可以直接点击项目名字那一栏的加号,在URL上方改接口名字,之后可以根据自己的需要添加请求,比如form-data就可以传输流文件,添加完之后点击保存就可以了。

话说我之前不知道还有这样好用的工具,纠结了很久怎么传输测试数据,得出的结论是自己写前端,再千辛万苦地传到后端,要是我当时搜资料的时候看到POSTMAN等关键词的时候能多注意一下就好了,我以为这种东西很麻烦,直接pass了,没想到最终还是走了弯路。

二、本地测试

一开始我测试了一下对方给的API范本,在云服务器上可以成功响应,但是我总不能在云服务器上调试代码,因此想着连接一下本地的URL,可是一直提示失败,看到网上有人说新版的apiost不能连接,但是我觉得不大可能,因此请教了对方,终于在对方的帮助下成功实现本地连接。

http://localhost:8000/result

上面是apipost连接本地使用的URL,有几点需要注意,一是http后面没有s,二是最后的result后面也不加斜杠(result是我自己定义的,对应@app.route斜杠后面那个result,),下面是后端代码的大体框架。

from flask import Flask,render_template,request,jsonify

@app.route('/result', methods=['POST', 'GET'])
def scales_detailchat_result():
    if request.method == 'POST':
        params = request.json # params是字典类型
        userID = params.get('userID')
        pa = params.get('pa')
        ans = pa.get('ans') # ans字符串类型
        ……
        result = {"issucceed":"True","userID":userID,"ans":ans}
        return jsonify(result)
    else:
        result = {"issucceed":"False","msg":"请求错误"}
        return jsonify(result)

if __name__=='__main__':
    # 腾讯云服务器
    # app.run(debug=True, host='0.0.0.0', port=8082)

    # 本地
    app.run(port =8000,debug=True)   

三、腾讯云服务器测试

我采用的是把两个接口都写到同一个api文件里,调用的时候根据URL的不同调用不同的接口,这样可以只使用一个端口,比较方便。

之后就是把api文件上传到云服务器,一点都不符合我的预料,我以为照搬上来就可以,没想到状况百出,量表那个一直提示我“The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.”,视频那个提示我失败。我按照网上的提示,把WSGI那个server换成了app.run(),就为了能加一个dubug=True然后提醒我bug原因。

之后遇到了一些奇奇怪怪的提醒,比如什么scikit-learn版本问题,提示“InconsistentVersionWarning: Trying to unpickle estimator LogisticRegression from version 1.3.2 when using version 1.4.0. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to:”,解决方案:卸载1.4.0的包,重新安装了1.3.2的;

在测试云服务器上的量表接口的时候,又开始提示“UserWarning: X does not have valid feature names, but LogisticRegression was fitted with feature names”,我想了半天,检查模型训练的代码才想起来我这个模型是逻辑回归模型,但是跟特征有什么关系,我本地都成功响应了,难道腾讯云服务器要用到其他的隐含的包吗?

就这么耗了半天,我一看请求,才发现我的请求里面涉及到模型输入的数据只有九个。。。而本地可以响应成功是因为我的本地和云服务器接口是分开的,我copy过来,却只改了本地,血的教训啊。

事实证明人总是会犯第二次错误,在测验云服务器上的视频接口的时候还是响应失败,一直提示“Failed to decode JSON object: Expecting property name enclosed in double quotes: line 20 column 5 (char 513)”,我检查了半天后端代码,没发现有什么问题,毕竟本地都已经测试过了,然后看到云服务器的视频接口的请求,发现我在最后一行多写了个逗号,还是熟悉的只改了本地接口的文件,就这两个马虎,直接让我熬夜到两点半。

不过还在还是成功了,可以睡个好觉了。

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值