简单、快速、无需注册的 MockJs 工具。通过参数来返回数据,传入什么参数就返回什么数据。
使用
接口只支持返回文本类数据,不支持图片、流数据等。
json
调用接口 https://mock.starxg.com/?responseBody={“say”:“hello”}&contentType=application/json
{
"say": "hello"
}
xml
调用接口 https://mock.starxg.com/?responseBody=xml…&contentType=application/xml;charset=utf8
<?xml version="1.0" encoding="UTF-8"?>
<message>
<warning>
Hello World
</warning>
</message>
svg
调用接口 https://mock.starxg.com/?responseBody=svg…&contentType=image/svg+xml
响应:
text
调用接口 https://mock.starxg.com/?responseBody…&contentType=text/plain;charset=utf8
君不见,黄河之水天上来,奔流到海不复回。
君不见,高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。
与君歌一曲,请君为我倾耳听。
钟鼓馔玉不足贵,但愿长醉不愿醒。
古来圣贤皆寂寞,惟有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。
主人何为言少钱,径须沽取对君酌。
五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。
参数
整个接口构造非常简单
http[s]://mock.starxg.com/[path]?responseBody=[responseBody]&contentType=[contentType]
- path: 任意。例如:
/user/add
或/user/get
,也可以为空 - responseBody: 响应体,任意字符。为了避免部分字符转义问题,建议使用
encodeURIComponent
转换一下 - contentType: 媒体类型,默认:
text/plain
GET
通常,浏览器会对 GET
请求的参数大小做限制,每个浏览器限制不同。当参数过长时,请使用 POST
请求。
- IE:URL的最大限制为2083个字符,若超出这个数字,提交按钮没有任何反应。
- Firefox:URL的长度限制为 65536 个字符。
- Safari:URL最大长度限制为 80000 个字符。
- Opera:URL最大长度限制为 190000 个字符。
- Chrome:URL最大长度限制为 8182 个字符。
- Apache(Server):URL最大长度限制为 8192个 字符。
- Microsoft Internet Information Server(IIS):URL最大长度限制为 16384 个字符。
POST
当使用 POST 请求时,请求类型须为 form-data
或 application/x-www-form-urlencoded
, responseBody
和 contentType
无需使用 encodeURIComponent
转码。
Postman 使用如下:
源代码
const defaultResponseBody = `responseBody: hello world
contentType: text/plain
`
const cors = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': '*'
}
export default {
async fetch(request, env, ctx) {
if (request.method === 'OPTIONS') {
return new Response('', {
headers: {
...cors
}
});
}
const params = new URL(request.url).searchParams
let responseBody = decodeURIComponent(params.get('responseBody') || '')
let contentType = params.get('contentType') || ''
if (request.method !== 'GET' && (contentType === ''
|| responseBody === '')) {
const ct = request.headers.get("content-type");
if (ct.includes("form")) {
const formData = await request.formData();
const body = {};
for (const entry of formData.entries()) {
body[entry[0]] = entry[1];
}
if (contentType === '') {
contentType = body['contentType']
}
if (responseBody === '') {
responseBody = body['responseBody']
}
}
}
contentType = contentType || 'text/plain'
responseBody = responseBody || defaultResponseBody
return new Response(responseBody, {
headers: {
'content-type': contentType,
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': '*'
}
});
},
};
自有部署
注册 Cloudflare 账号,然后创建一个 Worker,将上面代码复制进去即可。
更多
- https://blog.starxg.com/2023/08/mock/