我目前面临以下试图使用Node / Express提供模拟JSON响应的窘境:
目前,如果有人打电话,例如 GET / users /,Node将根据API规范中的端点模型架构返回虚拟成功响应(使用Swagger规范2.0)。
一切都适用于静态端点,因为您可以轻松地搜索端点的规范本身,但是当您使用动态路径参数遇到端点时,它会有点冒险。
例如,创建一个可扩展的解决方案,可以知道 GET / user / 10 / photos 之类的内容符合规范中的 / user / {user_id} / photos
您可以使用空括号替换请求路径中的所有整数,循环遍历所有规范端点并清除括号中的所有内容,然后尝试匹配它们。但这似乎很粗糙。
基本上问题是我忽略了一些更容易的基于通配符的JSON搜索功能。类似的路径“/ user / {user_id} / photos”包含来自其他端点“/ user / 10 / photos”的所有非整数值
编辑:这基本上就是我现在处理它的方式,它看起来并不是最迷人的方式:
//remove integers from our input
//e.g. /users/10/photos becomes /users/{}/photos
endpointClean = '/' + endpoint.replace(/(\/\d+)/g, "/{}")
//loop through all endpoints that exist
for ( var k in specFile.paths) {
//remove path parameters from endpoints
//e.g. /users/{user_id}/photos becomes /users/{}/photos
specClean = k.replace(/\{.*?\}/g, '{}');
if (endpointClean == specClean) {
// we've a match!
return k;
}
}