Attention: The feature described in this doc is still under development or is in a very early stage, please keep updated!
This article mainly introduces how Triple supports more standard HTTP Content-Types and how services should handle these requests.
Triple currently supports two serialization methods: Json and protobuf, corresponding to the ContentTypes:
This poses no problem when both consumers and providers are backend services. However, for browser clients, they may send more types of ContentTypes that the server needs to support for decoding, such as:
Rest has basically implemented the above decoding capabilities, making it an important step for Triple to achieve complete interoperability between Triple servers and browser clients.
POST /org.apache.dubbo.samples.tri.noidl.api.PojoGreeter/greetPojo HTTP/1.1
Host: 192.168.202.1:50052
Content-Type: multipart/form-data; boundary=example-part-boundary
Accept: application/json
--example-part-boundary
Content-Disposition: form-data; name="username"
Content-Type: text/plain
LuYue
--example-part-boundary
Content-Disposition: form-data; name="userdetail"
Content-Type: application/json
{
"location":"beijing",
"username":"LuYue"
}
--example-part-boundary
Content-Disposition: form-data; name="userimg";filename="user.jpeg"
Content-Type: image/jpeg
<binary-image data>
--example-part-boundary--
Receiving:
@Override
public ServerResponse greetPojo(String username, User user, byte[] attachment) {
//LuYue
System.out.println(username);
//user.name=Luyue;user.location=beijing
System.out.println(user);
//<binary-image data>
System.out.println(new String(attachment, StandardCharsets.UTF_8));
return new ServerResponse("Server Received:"+username);
}
POST /org.apache.dubbo.samples.tri.noidl.api.PojoGreeter/greetUrlForm HTTP/1.1
Host: 192.168.202.1:50052
Content-Type: application/x-www-form-urlencoded
Content-Length: 33
Accept: application/json
Hello=World&Apache=Dubbo&id=10086
Two receiving methods:
public ServerResponse greetUrlForm(String hello,String apache,long id){
System.out.println("Hello:"+hello);
System.out.println("Apache:"+apache);
System.out.println("Id:"+id);
return new ServerResponse("Server Received url form");
}
public ServerResponse greetUrlForm(Map<String,Object> params){
System.out.println("Hello:"+params.get("Hello"));
System.out.println("Apache"+params.get("Apache"));
System.out.println("Id"+params.get("Id"));
return new ServerResponse("Server Received url form");
}
POST /org.apache.dubbo.samples.tri.noidl.api.PojoGreeter/greetString HTTP/1.1
Host: 192.168.202.1:50052
Content-Type: text/plain; charset=UTF-8
Content-Length: 6
Accept: application/json
World!
Receiving:
public ServerResponse greetUrlForm(String world){
System.out.println("Hello:"+ world);
return new ServerResponse("Server Received url form.");
}
POST /org.apache.dubbo.samples.tri.noidl.api.PojoGreeter/greetXml HTTP/1.1
Host: 192.168.202.1:50052
Content-Type: application/xml
Content-Length: 86
Accept: application/xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<User>
<username>JohnDoe</username>
<location>New York</location>
</User>
Receiving:
@Override
public ServerResponse greetXml(User user) {
System.out.println(user.getUsername());
System.out.println(user.getLocation());
return new ServerResponse("Server Received xml.");
}