我正在制作一个 Android 和 iOS 应用程序,它将使用返回适当 JSON 响应的 API 与服务器进行交互。我团队中的其他人正在做服务器端工作。我不想打扰/等待她完成服务器实现。
是否有一个网站可以帮助我创建一个测试 API,以便每当我调用它时,它都会返回预定义的 JSON 响应?
示例:如果网站名为
api.com
,那么如果我创建一个帐户并调用 GET api.com/my_account/get_key
,它将返回 {"key": "fgjllpoiunvxaqw"}
。当然,我会在网站上对响应进行硬编码。
如果您只是从服务器读取数据(例如仅发出 /GET 请求),您可以将一些 .json 文件放在服务器上,然后从您的应用程序中读取它们。
例如,对于 get_key,您可以调用
GET yourwebsite.com/get_key.json
并解析数据。通过这种方式,您可以模拟应用程序如何处理网络延迟,这对于开始添加加载程序和错误处理 UI 非常有用。
如果您需要发布,我通常有一个 PHP 脚本来写入服务器上的文件,以便稍后检查发布的内容:
<?php
file_put_contents('testPostUserData.txt', file_get_contents('php://input'));
?>
如果您需要更多动态交互(GET 和 POST 数据,检索特定用户的一些数据),那么您可以使用一些免费的服务,例如 Backendless、Kinvey、StackMob 或 Parse .
最后,我通常有一个预处理器 #define 来在假 API 和真实 API 之间切换
#ifdef FAKE_API
static NSString * path requestBaseURL = @"http://yourwebsite.com";
#else
static NSString * const requestBaseURL = @"http://realwebserver.com";
#endif
虽然这个解决方案需要您编写一些代码,但我认为对于某些人来说可能已经足够了。
在等待回复时,我使用 BottlePy 编写了一个模拟 api,对于像我这样的新 Python 开发人员来说,这非常简单。
第 1 步:
easy_install bottle
或 pip install bottle
from bottle import route, run
import json
@route('/login', method='POST')
def login():
if request.POST.get('username') == 'a' and request.POST.get('password') == 'b':
return json.dumps({'status': 'success'})
else:
return json.dumps({'status': 'fail'})
run(host='localhost', port=8080, reloader=True)
# THATS IT!!!!
第 3 步:使用控制台运行文件
python name_of_file.py
POST localhost:8080/login
进行测试
终于找到了一个非常好的网站来做到这一点:Apiary。正是我所需要的,再加上一些其他很棒的事情,例如创建文档、提供协作工具等。