SaaSHub helps you find the best software and product alternatives Learn more →
Top 15 Go json-schema Projects
-
huma
A modern, simple, fast & flexible micro framework for building HTTP REST/RPC APIs in Go backed by OpenAPI 3 and JSON Schema.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
jsonschema
JSONSchema (draft 2020-12, draft 2019-09, draft-7, draft-6, draft-4) Validation using Go (by santhosh-tekuri)
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
xk6-kafka
k6 extension to load test Apache Kafka with support for various serialization formats, SASL, TLS, compression, Schema Registry client and beyond
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
Project mention: I write HTTP services in Go after 13 years (Mat Ryer, 2024) | news.ycombinator.com | 2024-02-09
Project mention: Looking for Open-source web app back-end repository written in Golang | /r/golang | 2023-12-08Project using APIBin for examples https://rest.sh
For json schema specifically there are some tools like go-jsonschema[1] but I've never used them personally. But you can use something like ffjson[2] in go to generate a static serialize/deserialize function based on a struct definition.
[1] https://github.com/omissis/go-jsonschema
Project mention: I write HTTP services in Go after 13 years (Mat Ryer, 2024) | news.ycombinator.com | 2024-02-09
Swaggest OpenAPI structures for Go
import { Writer, Reader, SCHEMA_TYPE_STRING, SchemaRegistry, GROUP_BALANCER_ROUND_ROBIN, BALANCER_ROUND_ROBIN, } from "k6/x/kafka"; import { check, sleep } from "k6"; const bootstrapServers = [ 'kafka-bootsrap-1:9001', ]; let vus_amount = 3; let total_written = 0; let total_read = 0; export const options = { vus: vus_amount, iterations: "3", thresholds: { kafka_writer_error_count: ["count == 0"], kafka_reader_error_count: ["count == 0"], }, }; const topicName = "my-topic"; const schemaRegistry = new SchemaRegistry(); const producer = new Writer({ brokers: bootstrapServers, topic: topicName, balancer: BALANCER_ROUND_ROBIN, // or pick another balancer https://github.com/mostafa/xk6-kafka/blob/main/api-docs/index.d.ts#L66 // ... auth config }); export function teardown(data) { producer.close(); } export default function () { const consumer = new Reader({ brokers: bootstrapServers, // it is important to set groupID, groupTopics and groupBalancers when using Kafka bootstrap server // topic ReaderConfig param doesn't quite work with bootstrap server groupID: topicName + "-group", groupTopics: [topicName], groupBalancers: [GROUP_BALANCER_ROUND_ROBIN], // or pick different balancer https://github.com/mostafa/xk6-kafka/blob/main/api-docs/index.d.ts#L75 }); let messageAmount = 1000; if (__VU == 1) { console.log('VU 1, writing messages. Iter ' + __ITER); for (let index = 0; index < messageAmount; index++) { let messages = [ { value: schemaRegistry.serialize({ data: "test-value-string-" + index + "-vu-" + __VU + "-iter-" + __ITER, schemaType: SCHEMA_TYPE_STRING, }), }, ]; producer.produce({ messages: messages }); total_written += messages.length; } } let consumerMsgAmount = Math.floor(messageAmount / vus_amount); let messages = consumer.consume({ limit: consumerMsgAmount}); total_read += messages.length; console.log("Amount of msgs received: " + messages.length + ", VU " + __VU + ", iter " + __ITER); check(messages, { "all messages returned": (msgs) => msgs.length == consumerMsgAmount, }); let firstMessageValue = schemaRegistry.deserialize({ data: messages[0].value, schemaType: SCHEMA_TYPE_STRING, }); let lastMessageValue = schemaRegistry.deserialize({ data: messages[consumerMsgAmount - 1].value, schemaType: SCHEMA_TYPE_STRING, }); check(messages[0], { "Topic equals to": (msg) => msg["topic"] == topicName }); console.log("First msg value " + firstMessageValue + ", offset" + messages[0]["offset"] + ", partition " + messages[0]["partition"] + ", VU " + __VU + ", iter " + __ITER); console.log("Last msg value " + lastMessageValue + ", offset" + messages[consumerMsgAmount - 1]["offset"] + ", partition " + messages[0]["partition"] + ", VU " + __VU + ", iter " + __ITER); consumer.close(); }
Go json-schema related posts
-
TypeSpec: A New Language for API-Centric Development
-
I write HTTP services in Go after 13 years (Mat Ryer, 2024)
-
Show HN: Go framework with builtin OpenAPI support
-
Show HN: Huma 2.0, it's like FastAPI for Go built on OpenAPI 3.1 and JSON Schema
-
Looking for Open-source web app back-end repository written in Golang
-
APIs in Go with Huma 2.0
-
JSON Schema generator
-
A note from our sponsor - SaaSHub
www.saashub.com | 2 Jun 2024
Index
What are some of the best open-source json-schema projects in Go? This list will help you:
Project | Stars | |
---|---|---|
1 | huma | 1,469 |
2 | REST Layer | 1,246 |
3 | jsonschema | 850 |
4 | baloo | 773 |
5 | restish | 686 |
6 | go-jsonschema | 523 |
7 | rest | 319 |
8 | go-jsonstruct | 232 |
9 | openapi-go | 209 |
10 | xk6-kafka | 131 |
11 | caddy-json-schema | 121 |
12 | jr | 114 |
13 | CONFLATE | 44 |
14 | churro | 13 |
15 | apibin | 4 |
Sponsored