Swagger模拟服务器

时间:2016-07-13 07:01:55

标签: swagger swagger-ui swagger-2.0

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

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

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

11 个答案:

答案 0 :(得分:28)

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

此命令行是您所需要的:

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

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

答案 1 :(得分:16)

SwaggerHub为OpenAPI 2.0和3.0规范提供了mock server。免费和付费计划都支持模拟。

要使用模拟服务器,请将您的规范导入SwaggerHub并启用“API Auto Mocking”。模拟响应可以是JSON,YAML和XML,它们是根据您的响应模式以及模式中定义的exampledefaultenum值生成的。

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

答案 2 :(得分:11)

根据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的原因,请参阅Q&A

答案 3 :(得分:8)

Imposter可编写脚本的多功能模拟服务器

非常容易在 Docker 环境中进行设置,并提供 Swagger UI 以与模拟api一起使用。

让我们看一个示例设置

  1. 在文件夹config/petstore.yaml

    中的文件中准备好招摇配置
    swagger: "2.0"
    info:
    version: 1.0.0
    title: Swagger Petstore
        .
        .
        .
    

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

  2. config/openapi-plugin-petstore-config.json

    中为 Imposter 创建配置文件
    {
      "plugin": "com.gatehill.imposter.plugin.openapi.OpenApiPluginImpl",
      "specFile": "petstore.yaml"
    }
    

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

  3. 使用 Docker

    运行 Imposter

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

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

    Imposter Mock API

答案 4 :(得分:3)

这是来自swagger yaml的mock api服务器的docker container

docker run -i \
    -p 8000:8000 \
    -v /path/to/file.yaml:/data/swagger.yaml \
    -t palo/swagger-api-mock:latest

这是内部使用swagger-mock-api

答案 5 :(得分:1)

我泊坞窗由Swagger编辑器,Swagger UI和Swagger模拟API服务器组成,以更轻松地处理它们。一探究竟。 此示例有一个摇摇欲坠的规范,因此编辑器,UI和模拟API服务器从一开始就无需任何配置即可运行。您所需要做的就是编辑swagger规范,保存swagger.json和swagger.yaml,然后重新启动docker。

swagger-all-in-one-docker-compose

答案 6 :(得分:1)

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

答案 7 :(得分:0)

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

答案 8 :(得分:0)

MockLab现在支持根据导入的Swagger定义自动生成模拟API。您还可以将其设置为Swaggerhub中接收的一个Webhook,以便在每次保存/发布时对其进行更新:

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

答案 9 :(得分:0)

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

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

答案 10 :(得分: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.