Tags: springe2004/go-micro
Tags
Address backwards compatibility Due to breaking changes in the past 3 weeks, I've had to address how this should be tackled in the long term. I've made the effort to make codec transition evolutionary as well as the api changes for Method() move to Endpoint(). In the process I've had to break the CallFunc signature but few likely use this. - Codecs are now evolutionary and backwards compatible - Service Method() is now back in the interface
BREAKING CHANGES Do not move to this tag unless you're willing to incur the breaking changes. This changes the default codec to raw protobuf and switches the content-type application/octet-stream to use the bytes codec also. This breaking change affects any previous use. To explicitly be backwards compatible do the following. In the server ``` // Process octet-stream as proto-rpc in the old ways server.DefaultCodecs["application/octet-stream"] = protorpc.NewCodec // Process json in the old way server.DefaultCodecs["application/json"] = jsonrpc.NewCodec // Process protobuf in the old way server.DefaultCodecs["application/protobuf"] = protorpc.NewCodec ``` In the client ``` // In the client send proto-rpc to be forwards compatible client.DefaultContentType = "application/proto-rpc" ``` There are changes to application/json and application/protobuf to use raw formats rather than json-rpc or proto-rpc. This will likely break behaviour via the api. The easiest way to resolve this is to reset these as well but it causes further issue. I would advise finding a common rolling path forward e.g a common compatible content-type/codec. This is an unfortunate change that has to be made so we can process raw formats. Method now moves to endpoint. In most places we have Endpoint specified except in the client/server abstractions. This has now moved. Most should be unaffected. But be aware of the change. Any wrappers may break.
PreviousNext