protoxy alternatives and similar packages
Based on the "Server Applications" category.
Alternatively, view protoxy alternatives based on common mentions on social networks and blogs.
-
minio
MinIO is a high-performance, S3 compatible object store, open sourced under GNU AGPLv3 license. -
consul
Consul is a distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure. -
SFTPGo
Full-featured and highly configurable SFTP, HTTP/S, FTP/S and WebDAV server - S3, Google Cloud Storage, Azure Blob -
RoadRunner
🤯 High-performance PHP application server, process manager written in Go and powered with plugins -
Ponzu
Headless CMS with automatic JSON API. Featuring auto-HTTPS from Let's Encrypt, HTTP/2 Server Push, and flexible server framework written in Go. -
Jocko
Kafka implemented in Golang with built-in coordination (No ZK dep, single binary install, Cloud Native) -
algernon
Small self-contained pure-Go web server with Lua, Teal, Markdown, Ollama, HTTP/2, QUIC, Redis, SQLite and PostgreSQL support ++ -
jackal
DISCONTINUED. 💬 Instant messaging server for the Extensible Messaging and Presence Protocol (XMPP). -
go-feature-flag
GO Feature Flag is a simple, complete and lightweight self-hosted feature flag solution 100% Open Source. 🎛️ -
SDNS
A high-performance, recursive DNS resolver server with DNSSEC support, focused on preserving privacy. -
Euterpe
Self-hosted music streaming server 🎶 with RESTful API and Web interface. Think of it as your very own Spotify! ☁️🎧 -
goproxy
🦁 goproxy is a proxy server which can forward http or https requests to remote servers./ goproxy 是一个反向代理服务器,支持转发 http/https 请求。 -
Eru
Eru, a simple, stateless, flexible, production-ready orchestrator designed to easily integrate into existing workflows. Can run any virtualization things in long or short time. -
Simple CRUD App w/ Gorilla/Mux, MariaDB
Simple CRUD Application with Go, Gorilla/mux, MariaDB, Redis. -
simple-jwt-provider
Simple and lightweight provider which exhibits JWTs, supports login, password-reset (via mail) and user management.
SaaSHub - Software Alternatives and Reviews
Do you think we are missing an alternative of protoxy or a related project?
README
Welcome to Protoxy 👋
What is Protoxy?
Protoxy allows you to test your REST APIs that use Protocol Buffer serialization through Postman and other API testing tools which do not natively support Protobuf encoding. Protoxy is a proxy server that converts the JSON in your request body to the appropriate Protobuf message type and transforms the response from your back-end back into JSON. You don't need to make any changes to your source code to use Protoxy.
Install
go get github.com/camgraff/protoxy
Usage
Consider a proto file located at ./protos/example.proto
that looks like this:
syntax = "proto3";
package example;
message ExampleRequest {
string text = 1;
int32 number = 2;
repeated string list = 3;
}
message ExampleResponse {
string text = 1;
}
Start the server by specifying your import paths, proto file names, and optional port.
protoxy -I ./protos/ --port 7777 example.proto
Configure Postman to send requests through the Proxy server.
Add your fully-qualified message names as params in the Content-Type header.
Content-Type: application/x-protobuf; reqMsg="example.ExampleRequest"; respMsg="example.ExampleResponse";
Send your request as a raw JSON body.
{ "text": "some text", "number": 123, "list": ["this", "is", "a", "list"] }
The response is:
{ "text": "this response was automagically converted to JSON" }
Using Protobuf in Query String
Protoxy also supports sending protobuf messages as a base64 encoded query string in the URL. To do this, add an additional param qs
in the header whose value corresponds to the query string parameter. For example:
Content-Type: application/x-protobuf; reqMsg="example.ExampleRequest"; respMsg="example.ExampleResponse"; qs="proto_body";
This will result in a URL like:
http://example.com?proto_body={base64 encoding of example.ExampleRequest}
Handling Multiple Response Message Types
If your API sends multiple response message types, the respMsg
parameter accepts a comma-seperated list of values.
Content-Type: application/x-protobuf; reqMsg="example.ExampleRequest"; respMsg="example.ExampleResponse,example.DifferentResponse";
Note: Protoxy will attempt to unmarshal your proto messages into each type of response and will send the first successful one. This can produce unexpected results because the same wire-format message can successfully be unmarshalled into multiple proto message types depending on the fields in the proto message. If possible, it is best to ensure that you back-end server returns only one response type per route.
Author
👤 Cam Graff
🤝 Contributing
Contributions, issues and feature requests are welcome!
Feel free to check issues page.
Show your support
Give a ⭐️ if this project helped you!
*Note that all licence references and agreements mentioned in the protoxy README section above
are relevant to that project's source code only.