SchemaFromType returns a schema for a given type, using the registry to possibly create references for nested structs. The schema that is returned can then be passed to `huma.Validate` to efficiently validate incoming requests. // Create a registry and register a type. registry := huma.NewMapRegi
(r Registry, t reflect.Type)
| 747 | // registry := huma.NewMapRegistry("#/prefix", huma.DefaultSchemaNamer) |
| 748 | // schema := huma.SchemaFromType(registry, reflect.TypeOf(MyType{})) |
| 749 | func SchemaFromType(r Registry, t reflect.Type) *Schema { |
| 750 | s := schemaFromType(r, t) |
| 751 | t = deref(t) |
| 752 | |
| 753 | // Transform generated schema if type implements SchemaTransformer |
| 754 | ptrT := reflect.PointerTo(t) |
| 755 | if t.Implements(schemaTransformerType) || ptrT.Implements(schemaTransformerType) { |
| 756 | s = reflect.New(t).Interface().(SchemaTransformer).TransformSchema(r, s) |
| 757 | |
| 758 | // The schema may have been modified, so recompute the error messages. |
| 759 | s.PrecomputeMessages() |
| 760 | } |
| 761 | return s |
| 762 | } |
| 763 | |
| 764 | func schemaFromType(r Registry, t reflect.Type) *Schema { |
| 765 | isPointer := t.Kind() == reflect.Pointer |
no test coverage detected
searching dependent graphs…