如何将API端点与动态路径参数匹配到API规范

时间:2014-11-10 22:11:05

标签: javascript json node.js api

我目前面临以下试图使用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;
            }
        }

0 个答案:

没有答案