88

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

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

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

4

11 回答 11

61

从 OpenAPI (fka Swagger) 规范创建简单模拟而无需代码的一种简单方法是使用http://github.com/stoplightio/prism上可用Typescript 编写的工具调用prism 。

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

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

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

编辑(2020 年 8 月):

该命令在最新版本中已更改。以下将做:

prism mock <your spec file>

它也接受招摇和邮递员文档。

于 2016-07-13T11:02:12.377 回答
34

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

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

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

于 2017-12-14T19:32:37.500 回答
20

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

在Docker环境中设置非常容易,并提供Swagger UI来使用您的模拟 api。

让我们看一个示例设置

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

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

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

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

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

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

  2. 使用Docker运行Imposter

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

     docker run -ti -p 8443:8443 \
     -v $(pwd)/config:/opt/imposter/config \
     outofcoffee/imposter-openapi
    
  3. 打开http://localhost:8443/_spec/来玩你的 Mock Server 和 Swagger UI

    冒名顶替者模拟 API

于 2017-04-20T09:50:44.090 回答
14

鉴于 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的社区驱动版本。分叉背后的原因请参考问答。

于 2016-07-13T07:29:11.533 回答
4

这是来自 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

于 2017-07-15T12:25:13.890 回答
2

我 docker 组合了 Swagger Editor、Swagger UI 和 Swagger mock api server 来更轻松地处理它们。一探究竟。这里有一个示例 swagger 规范,因此编辑器、UI 和模拟 API 服务器从一开始就无需任何配置即可运行。您需要做的就是编辑 swagger 规范,保存 swagger.json 和 swagger.yaml,然后重新启动 docker。

swagger-all-in-one-docker-compose

于 2018-07-27T06:51:29.230 回答
1

最近我遇到了 Microcks.io,它帮助我解决了许多问题。还发现 Apicur.io 用于编辑/创建 swagger 文件。一个值得拥抱的标准。

于 2021-08-09T03:12:32.017 回答
0

openapi-mockswagger-node-runner的CLI 包装器,专门用于从openapi /swagger 规范文件启动模拟服务器。

于 2018-02-14T09:44:30.787 回答
0

MockLab 现在支持从导入的 Swagger 定义中自动生成模拟 API。您还可以将其设置为 Swaggerhub 中收到的 webhook,以便在每次保存/发布时更新:

https://www.mocklab.io/blog/mocklab-now-supports-swagger-and-swaggerhub/

于 2018-08-07T11:16:27.177 回答
0

Mock Server 项目支持基于 Swagger/OpenAPI Specs 创建存根。

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

于 2020-12-23T10:19:36.590 回答
0

我自己创建了可以服务器swagger.json文件的模拟 api 服务器。如果您安装了 python,则在本地设置非常容易。

看看这个:https ://github.com/bikcrum/Mock-API-server

只需使用此命令为您的swagger.json文件提供服务,该文件将根据 swagger 文件的规范创建 API 端点。

快速直接

python app.py -s /path/to/swagger.json

扩展选项

usage: app.py [-h] -s SOURCE [-p PORT] [-t {swagger}] [-sc STATUS_CODE] [-r RANDOM_SEED] [-d DEFAULT_VALUE [DEFAULT_VALUE ...]]
              [-l LIST_SIZE [LIST_SIZE ...]]

Options for mock responses

Required and optional arguments:
  -h, --help            show this help message and exit

  -s SOURCE, --source SOURCE
                        (Required) API reference source file path.
  
  -p PORT, --port PORT  (Optional,default=5000) Port number the app runs on.

  -t {swagger}, --type {swagger}
                        (Optional,default='swagger') Type of API reference. Currently only supports Swagger.

  -sc STATUS_CODE, --status_code STATUS_CODE
                        (Optional,default=200) Generates responses with status code provided.

  -r RANDOM_SEED, --random_seed RANDOM_SEED
                        (Optional) Generates random responses based on seed value.

  -d DEFAULT_VALUE [DEFAULT_VALUE ...], --default_value DEFAULT_VALUE [DEFAULT_VALUE ...]
                        (Optional) Sets default values in response body. Format key=value.

  -l LIST_SIZE [LIST_SIZE ...], --list_size LIST_SIZE [LIST_SIZE ...]
                        (Optional,default=[2]) Sets default size of list in response body.

于 2021-02-26T05:12:38.600 回答