Как сформировать часть ресурса protobuf в теле http-запроса и протестировать его с помощью клиента dhc или почтальона для остальных служб
Я создал.proto сообщение, и я выставляю службу отдыха, которая выглядит следующим образом
@Path("/test")
public interface test{
@POST
@Produces("application/x-protobuf")
@Consumes("application/x-protobuf")
public Response getProperties(TestRequest testrq);
}
Теперь TestRequest - это сгенерированный Java-файл.protobuf. Как передать его в теле запроса?
это будет формат файла.proto
message TestRequest
{
string id = 1;
string name = 2;
enum TestType
{
Test=1
}
TestType testType = 3;
}
3 ответа
You can use this code snippet to test the protobuf as i don't find any solution with postman or dhcclient
URL url = new URL("https://localhost:8080/test");
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setDoInput(true);
urlc.setDoOutput(true);
urlc.setRequestMethod("POST");
urlc.setRequestProperty("Accept", "application/x-protobuf");
urlc.setRequestProperty("Content-Type","application/x-protobuf");
TestRequestPb.TestRequest.Builder testRequestBuilder=TestRequestPb.TestRequest.newBuilder();
TestRequest testRequest = testRequestBuilder.build();
testRequest.writeTo(urlc.getOutputStream());
testRequest=TestRequest.newBuilder().mergeFrom(urlc.getInputStream()).build();
Дайте Protoman попробовать, если вам нужен простой клиент Protobuf API.
Отказ от ответственности: это мой побочный проект
Вы можете использовать protoCURL, инструмент командной строки, для отправки полезных данных Protobuf на конечные точки HTTP REST и их отладки. Он работает так же, как и cURL, за исключением того, что вы можете использовать текстовый формат Protobuf или формат JSON для описания вашего запроса, который будет автоматически кодироваться и декодироваться. Поскольку принятый ответ на самом деле не использует почтальона или клиента dhc, я думаю, что CLI может быть приемлемым для вас или других читателей.
В вашем случае запрос будет выглядеть так:
protocurl -I path/to/proto -i ..TestRequest -o ..TestResponse \
-u http://localhost:8080/test \
-d "id: 'myid', name: 'myname', testType: Test"
если ваш файл .proto находится в папке
path/to/proto
.
Однако, поскольку в вашем файле .proto не указан тип ответа TestResponse, отобразить его невозможно. Вам нужно будет добавить ответное сообщение в ваш файл .proto. Однако существует нерешенная проблема с отображением ответов даже без схемы сообщений.
Вы можете найти примеры выходных данных в репозитории.
Отказ от ответственности: я создатель этого и сделал это, потому что столкнулся с той же проблемой.