pkg/runtime/serializer/codec_factory.go
实现 NegotiatedSerializer 接口,可以获取不同media type的encoder、decoder、serializer。其中serializer实现了encoder、decoder。
// DecoderToVersion returns a decoder that targets the provided group version.func (f CodecFactory) DecoderToVersion(decoder runtime.Decoder, gv runtime.GroupVersioner) runtime.Decoder {return f.CodecForVersions(nil, decoder, nil, gv)}// EncoderForVersion returns an encoder that targets the provided group version.func (f CodecFactory) EncoderForVersion(encoder runtime.Encoder, gv runtime.GroupVersioner) runtime.Encoder {return f.CodecForVersions(encoder, nil, gv, nil)}func (f CodecFactory) CodecForVersions(encoder runtime.Encoder, decoder runtime.Decoder, encode runtime.GroupVersioner, decode runtime.GroupVersioner) runtime.Codec {// TODO: these are for backcompat, remove them in the futureif encode == nil {encode = runtime.DisabledGroupVersioner}if decode == nil {//默认decode版本decode = runtime.InternalGroupVersioner}return versioning.NewDefaultingCodecForScheme(f.scheme, encoder, decoder, encode, decode)}
