Code Monkey home page Code Monkey logo

gbswagger's Introduction

GBSwagger

Middleware for generate Swagger Document based in your classes using RTTI.

How to use with Horse

uses
  Horse,
  Horse.GBSwagger;
  
type
  TUser = class
  private
    Fid: Double;
    Fname: String;
    FlastName: string;
  public
    property id: Double read Fid write Fid;
    property name: String read Fname write Fname;
    property lastName: string read FlastName write FlastName;
  end;

  TAPIError = class
  private
    Ferror: string;
  public
    property error: string read Ferror write Ferror;
  end;
  
var
  APP: THorse;
  
begin
  App := THorse.Create(9000);

  App.Use(HorseSwagger); // Access http://localhost:9000/swagger/doc/html
  
  API.Get ('user', procedure (Req: THorseRequest; Resp: THorseResponse; Next: TProc) begin end);
  API.Post('user', procedure (Req: THorseRequest; Resp: THorseResponse; Next: TProc) begin end);
  
  Swagger
      .BasePath('v1')
      .Path('user')
        .Tag('User')
        .GET('List All', 'List All Users')
          .AddResponse(200, 'successful operation')
            .Schema(TUser)
            .IsArray(True)
          .&End
          .AddResponse(400, 'Bad Request')
            .Schema(TAPIError)
          .&End
          .AddResponse(500, 'Internal Server Error')
            .Schema(TAPIError)
          .&End
        .&End
        .POST('Add user', 'Add a new user')
          .AddParamBody('User data', 'User data')
            .Required(True)
            .Schema(TUser)
          .&End
          .AddResponse(201, 'Created')
            .Schema(TUser)
          .&End
          .AddResponse(400, 'Bad Request')
            .Schema(TAPIError)
          .&End
          .AddResponse(500, 'Internal Server Error')
            .Schema(TAPIError)
          .&End
        .&End
      .&End
    .&End;

  App.Start;
end.

picture

Register

You don't need to write the same error response for many paths, just use a Register interface.

  Swagger
      .Register
        .SchemaOnError(TAPIError)        
      .&End
      .BasePath('v1')
      .Path('user')
        .Tag('User')
        .GET('List All', 'List All Users')
          .AddResponse(200, 'successful operation')
            .Schema(TUser)
            .IsArray(True)
          .&End
          .AddResponse(400).&End
          .AddResponse(500).&End
        .&End
        .POST('Add user', 'Add a new user')
          .AddParamBody('User data', 'User data')
            .Required(True)
            .Schema(TUser)
          .&End
          .AddResponse(201, 'Created')
            .Schema(TUser)
          .&End
          .AddResponse(400).&End
          .AddResponse(500).&End
        .&End
      .&End
    .&End;

gbswagger's People

Contributors

gabrielbaltazar avatar arvanus avatar iagoocesaar avatar andrewsbejatto avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.