gnostic gRPC plugin
GSoC 2019 project
This tool converts an OpenAPI v3.0 API description into a description of a gRPC
service that can be used to implement that API using gRPC-JSON Transcoding. gRPC services are described using the Protocol Buffers language.
OpenAPI descriptions are read and processed with
gnostic, and this tool runs as a
gnostic plugin.
High level overview:
Under the hood the plugin first creates a FileDescriptorSet (bookststore.descr
) from the input
data. Then protoreflect is used to print the output file.
How to use:
Install gnostic and the plugin:
go get -u github.com/google/gnostic
go get -u github.com/google/gnostic-grpc
Run gnostic with the plugin:
gnostic --grpc-out=examples/bookstore examples/bookstore/bookstore.yaml
This generates the gRPC service definition examples/bookstore/bookstore.proto
.
End-to-end example
This directory contains a tutorial on how to build a gRPC service that implements an OpenAPI specification.
What conversions are currently supported?
Given an OpenAPI object following fields will be represented inside a
.proto file:
Object | Fields | Supported |
---|
OpenAPI object | | |
| openapi | No |
| info | No |
| servers | No |
| paths | Yes |
| components | Yes |
| security | No |
| tags | No |
| externalDocs | No |
Disclaimer
This is prerelease software and work in progress. Feedback and
contributions are welcome, but we currently make no guarantees of
function or stability.
Requirements
gnostic-grpc can be run in any environment that supports Go
and the Google Protocol Buffer Compiler.
Copyright
Copyright 2019, Google Inc.
License
Released under the Apache 2.0 license.