Swagger模拟服务器

raf*_*kob 51 swagger swagger-ui swagger-2.0

我在Swagger文件中有一个API参考.我想创建一个非常简单的模拟服务器,以便在我调用时:

mymockurl.com/users 它将返回一个预定义的json(无需连接到数据库).

最简单的方法是什么?我不是后躯.

Arn*_*ret 31

从没有代码的OpenAPI(fka.Swagger)规范创建简单模拟的简单方法是使用http://github.com/stoplightio/prism上提供的工具调用棱镜

这个命令行就是您所需要的:

./prism run --mock --list --spec <your swagger spec file>
Run Code Online (Sandbox Code Playgroud)

模拟服务器将根据OpenAPI规范返回动态响应.如果规范中提供了示例,prism将返回它们,否则它将根据规范生成虚拟数据.

  • 简而言之:棱镜不是开源软件,棱镜本身的许可证本身也不清楚.麻省理工学院许可的安装人员正在下载一个二进制的棱镜包. (6认同)
  • 该页面已移至 http://stoplight.io/platform/prism/ - 另请参阅 https://github.com/stoplightio/prism (2认同)

Hel*_*len 20

SwaggerHub为OpenAPI 2.0和3.0规范提供了一个模拟服务器.免费和付费计划都支持模拟.

要使用模拟服务器,请将您的规范导入SwaggerHub并启用"API Auto Mocking".模拟响应可以是JSON,YAML和XML,并根据您的响应模式和产生example,default并且enum在架构中定义的值.

披露:我为制作SwaggerHub的公司工作.

  • 大!正是我需要的!我将其标记为答案。我不喜欢的一件事是价格-对于只想拥有几个私有API的自由职业者,应该有一个较小的计划。 (2认同)
  • 我可以在我的网络本地部署这样的服务器吗?或者只能使用 swaggerhub.com 来完成? (2认同)
  • @IvanVinogradov SwaggerHub 有 SaaS 和 On-Premise 版本,其他答案提到了您可以在本地安装和使用的模拟工具。 (2认同)
  • @MaxBarrass 没有。 (2认同)
  • @John 目前[不支持](https://support.smartbear.com/swaggerhub/docs/integrations/api-auto-mocking.html#how): _"如果 `examples` 包含多个示例,则第一个示例将会被使用”_。请随时[提交功能请求](https://support.smartbear.com/swaggerhub/message/)。(但是,我们的 [ReadyAPI 虚拟化](https://smartbear.com/product) 支持[随机响应](https://support.smartbear.com/readyapi/docs/virtualization/configure/dispatch/index.html) /ready-api/features/api-virtualization-features/) 产品(如果您可以选择)。 (2认同)

Wil*_*eng 12

根据OpenAPI/Swagger规范,您可以使用Swagger Codegen在不同的服务器框架中生成服务器存根(例如Java Spring.PHP Slim,Ruby on Rails5等).

以下是相关文档:

https://github.com/swagger-api/swagger-codegen/wiki/Server-stub-generator-HOWTO

更新:2018年5月,Swagger Codegen的大约50名顶级贡献者决定分配项目以创建一个名为OpenAPI Generator的社区驱动版本.有关fork的原因,请参阅问答.


u2i*_*2ix 9

Imposter是一个可编写脚本的多用途模拟服务器.

Docker环境中设置非常简单,并提供了一个Swagger UI来与你的模拟api一起玩.

我们来看一个示例设置

  1. 在文件夹中的文件中准备好swagger配置 config/petstore.yaml

    swagger: "2.0"
    info:
    version: 1.0.0
    title: Swagger Petstore
        .
        .
        .
    
    Run Code Online (Sandbox Code Playgroud)

    您可以从此处复制示例swagger规范.

  2. 创建一个配置文件骗子config/openapi-plugin-petstore-config.json

    {
      "plugin": "com.gatehill.imposter.plugin.openapi.OpenApiPluginImpl",
      "specFile": "petstore.yaml"
    }
    
    Run Code Online (Sandbox Code Playgroud)

    配置文件的名称必须以-config.json.

  3. Docker运行Imposter

    确保您的shell放在config并运行的父目录中

    docker run -ti -p 8443:8443 \
    -v $(pwd)/config:/opt/imposter/config \
    outofcoffee/imposter-openapi
    
    Run Code Online (Sandbox Code Playgroud)
  4. 打开http:// localhost:8443/_spec /以使用您的Mock Server和Swagger UI

    Imposter Mock API

  • 披露:我是上述项目的作者,Imposter.由于原始海报询问"最简单的方法",我还想向您指出Imposter的免费托管版本,在https://www.remotebot.io/mocks上 - 托管版本没有'要求你自己运行任何东西,只需上传你的Swagger API规范,它就会创建一个即时模拟. (4认同)
  • [remotebot.io/mocks](https://www.remotebot.io/mocks) 不再工作。 (2认同)
  • 看起来他已将其移至 https://www.mocks.cloud/ (2认同)

aru*_*net 5

这是来自 swagger yaml 的模拟 api 服务器的docker 容器

docker run -i \
    -p 8000:8000 \
    -v /path/to/file.yaml:/data/swagger.yaml \
    -t palo/swagger-api-mock:latest
Run Code Online (Sandbox Code Playgroud)

这是内部使用swagger-mock-api


Sai*_*pta 5

模拟服务器项目支持基于 Swagger/OpenAPI 规范创建存根。

https://www.mock-server.com/mock_server/using_openapi.html