Swagger/OpenAPI模拟服务器

119
我有一个Swagger文件中的API参考文档,我想创建一个非常简单的模拟服务器,这样当我调用例如:

mymockurl.com/users 时,它会返回预定义的JSON(无需连接到数据库)。

最简单的方法是什么?我不是后端开发人员。

13个回答

86

使用一个名为 prism 的工具,你可以轻松地从 OpenAPI(之前被称作 Swagger)规范中创建简单的模拟数据而无需编写代码。该工具由 Typescript 编写,可在 http://github.com/stoplightio/prism 上获得。

你只需要这个命令行:

./prism run --mock --list --spec <your swagger spec file>

模拟服务器将根据OpenAPI规范返回动态响应。

如果规范中提供了示例,prism将返回它们;否则,它将根据规范生成虚假数据。

编辑(2020年8月):

最新版本中命令已更改。以下内容可行:

prism mock <your spec file>

它也接受Swagger和Postman文档。


2
该页面已经移动到http://stoplight.io/platform/prism/ - 另请参见https://github.com/stoplightio/prism - Philipp Paland
感谢澄清“Open API (前身为Swagger)”!我对这个有点晚了。 - Benxamin
看起来这个选项“run”已经过时了,在最新版本的prism中不再可用。显然,它已被“mock”取代,但我还没有找到“--list”的替代品。 - Tomasz Przychodzki
7
简要提示:Prism不是开源软件,其许可证也不清楚。采用MIT许可证的安装程序是下载Prism的二进制包。 - Thomas
1
团队在2019年5月底添加了Apache 2.0许可证。因此,软件许可证不再含糊不清。 - maxarndt
显示剩余2条评论

44

SwaggerHub 提供了 OpenAPI 2.0 和 3.0 规范的 模拟服务器。无论是免费计划还是付费计划都支持模拟。

要使用模拟服务器,请将您的规范导入 SwaggerHub,并启用“API自动模拟”。模拟响应可以是 JSON、YAML 和 XML 格式,并基于您的响应模式以及在模式中定义的 exampledefaultenum 值生成。

声明: 我为 SwaggerHub 的制造公司工作。


2
太好了!它完全符合我的需求!我将其标记为答案。唯一不喜欢的是定价 - 应该有一个更小的计划,供只想拥有几个私人API的自由职业者使用。 - rafakob
2
我能否在我的网络上部署这样的服务器?或者只能使用swaggerhub.com完成? - Ivan Vinogradov
2
SwaggerHub有SaaS和On-Premise版本,其他答案提到的模拟工具可以在本地安装和使用。 - Helen
2
@MaxBarrass 不。 - Helen
2
@John 目前这个功能不支持:_"如果examples包含多个示例,则将使用第一个示例"_。请随时提交功能请求。(但是,如果您愿意,我们的ReadyAPI Virtualization产品支持随机响应。) - Helen
显示剩余2条评论

26

Imposter 是一个用 Java 编写的可编程、多功能的模拟服务器。

Docker 环境中非常容易设置,并提供了一个 Swagger UI 来玩弄您的模拟 API。

让我们看一个设置示例:

  1. 准备好一个 Swagger 配置文件,放在文件夹 config/petstore.yaml

 swagger: "2.0"
 info:
 version: 1.0.0
 title: Swagger Petstore
     .
     .
     .

您可以从此处复制示例Swagger规范。

  1. config/openapi-plugin-petstore-config.json中为 Imposter 创建配置文件

 {
   "plugin": "com.gatehill.imposter.plugin.openapi.OpenApiPluginImpl",
   "specFile": "petstore.yaml"
 }

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

使用Docker运行Imposter

确保您的shell在config的父目录中,并运行以下命令:

 docker run -ti -p 8443:8443 \
 -v $(pwd)/config:/opt/imposter/config \
 outofcoffee/imposter-openapi
  • 打开 http://localhost:8443/_spec/ 来使用模拟服务器和Swagger UI

    Imposter Mock API


  • 5
    声明:我是上面项目Imposter的作者。由于原始发布者问到“最简单的方法”,我还想向您指出Imposter的免费托管版本,位于https://www.remotebot.io/mocks - 托管版本不需要您自己运行任何内容,只需上传您的Swagger API规范,它就会创建一个即时模拟。 - outofcoffee
    @outofcoffee 我喜欢使用imposter,并且在我的Mac上设置很容易。只是想知道,在Windows机器上是否可以不使用Docker来使用imposter。 - Akash
    1
    嗨@Akash,是的-请参阅文档中的“作为独立Java应用程序运行”部分:https://github.com/outofcoffee/imposter/blob/master/docs/getting_started.md#running-as-a-standalone-java-application - outofcoffee
    2
    「remotebot.io/mocks」不再可用。 - Triguna
    2
    看起来他把它移动到了https://www.mocks.cloud/。 - Nick
    显示剩余2条评论

    16

    这会返回预定义的JSON响应吗?你能帮忙@wing328吗? - elizabetht
    1
    这可能取决于生成器。请在 https://github.com/swagger-api/swagger-codegen/issues 开始讨论。 - William Cheng
    我几天前打开了一个问题,但还没有得到回复:https://github.com/swagger-api/swagger-codegen/issues/5310 我也尝试使用inflector,但没有成功。如何使用swagger返回预定义的json响应?UI开发人员想要尝试API并查看示例响应。 - elizabetht

    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
    

    这是内部使用swagger-mock-api来实现的。


    4

    3
    我使用Docker Compose搭建了Swagger Editor、Swagger UI和Swagger mock API服务器,以便更轻松地处理它们。请查看此链接。
    其中包含一个Swagger规范的示例,所以从一开始就可以运行Editor、UI和mock API服务器,无需任何配置。您只需要编辑Swagger规范,保存swagger.json和swagger.yaml文件,并重新启动Docker即可。
    链接:swagger-all-in-one-docker-compose

    欢迎来到Stack Overflow!虽然链接是分享知识的好方法,但如果它们在未来失效了,它们就不会真正回答问题。在您的答案中添加回答问题的链接的基本内容。如果内容过于复杂或太大而无法适应此处,请描述所提出解决方案的一般思路。请记住始终保留对原始解决方案网站的链接引用。请参见:如何撰写良好的答案? - sɐunıɔןɐqɐp

    2

    最近我发现了Microcks.io,它帮助我解决了许多问题。 同时也发现了Apicur.io用于编辑/创建swagger文件。这是一个值得采纳的标准。


    2
    Specmatic 允许您使用 OpenAPI 规范创建模拟服务器(请参见 视频演示)。这里是“入门指南”。
    在创建模拟服务器时需要考虑的一个重要方面是,您设置的 canned responses/expectations/stub data 绝不能与您的 OpenAPI 规范不同步(过期的 stubs)。这可以通过 Specmatic 的 Smart Mocks 来保证。
    声明:我是 Specmatic 的首席开发人员和 CTO。

    2
    使用 Mockoon,“Mockoon 是设计和运行模拟 REST API 的最简单、最快捷的方式。无需远程部署,无需账户,免费且开源。” 在我看来,它具有最好的用户友好型图形界面。它还有一个 CLI 和 Serverless 函数选项。您可以从 Swagger/Open API 文件生成模拟端点,并在进行更改后导出它们。
    还有许多其他功能:每个路由多个响应、文件服务等。请参见 https://mockoon.com/features/ 了解详情。
    您可以在这里查看 Mockoon 与其他产品的比较:https://mockoon.com/compare/

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接