我正在使用一个API A(用Java编写),该API调用远程服务(用Java编写)B。远程服务B返回一个名为“课程”的对象。
我想使用protobuf进行此通信,因为它应该比JSON快。
远程服务B代码:
@RestController
public class RemoteServiceB {
@RequestMapping(value = "/myCourse", method = RequestMethod.GET)
public Course getMyCourse() {
Course response = MyCourse.Course.newBuilder().setCourseName("sd")build(); .
return response;
}
API A代码:
public class APIA{
public Course call(){
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet request = new HttpGet(url);
request.addHeader("accept", "application/x-protobuf");
HttpResponse httpResponse = httpClient.execute(request);
InputStream protobufStream = httpResponse.getEntity().getContent();
Course course = Course.parseFrom(protobufStream);
}
}
我想了解在整个流程中到底使用了protobuf序列化/反序列化的所有地方吗?
1。当Course对象通过HTTP发送到我的API A时,是否使用了protobuf序列化?如果没有,那么使用哪种序列化技术,然后在整个流程中我应该在哪里使用protobuf序列化?
2。当我的API A在下面的代码行(来自API A的代码)获得http响应时,是否使用protobuf反序列化
InputStream protobufStream = httpResponse.getEntity().getContent();
如果没有,那么这里使用哪种反序列化技术?
3.protobuf反序列化是否也用于下一行(根据API A的代码)?
Course course = Course.parseFrom(protobufStream);
我是否缺少上面的代码来利用protobuf通过JSON提供的更快速度?