Giter Site home page Giter Site logo

grpc-swagger / grpc-swagger Goto Github PK

View Code? Open in Web Editor NEW
413.0 10.0 58.0 1.69 MB

Debugging gRPC application with swagger-ui.

License: MIT License

Java 62.66% Shell 0.54% Dockerfile 0.20% HTML 9.69% CSS 26.81% Procfile 0.10%
swagger openapi grpc-swagger grpc grpc-ecosystem grpc-json grpc-api

grpc-swagger's People

Contributors

dependabot[bot] avatar hutaishi avatar liuzhengyang avatar zhangjikai avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

grpc-swagger's Issues

存在的一些bug

  1. 服务注册页面url自动去掉多余的空格
  2. proto中service 没有package信息会报错

ServerReflectionClient.listServices(),方法调用报错:Error in server reflection rpc while listing services

大神帮忙看一下,感谢🙏
java.util.concurrent.ExecutionException: java.lang.RuntimeException: Error in server reflection rpc while listing services
at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:528)
at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:509)
at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:85)
at io.grpc.grpcswagger.utils.GrpcReflectionUtils.resolveServices(GrpcReflectionUtils.java:43)
at io.grpc.grpcswagger.service.Test.getont(Test.java:37)
at io.grpc.grpcswagger.service.Test.main(Test.java:30)
Caused by: java.lang.RuntimeException: Error in server reflection rpc while listing services
at io.grpc.grpcswagger.grpc.ServerReflectionClient$ListServicesHandler.onError(ServerReflectionClient.java:106)
at io.grpc.stub.ClientCalls$StreamObserverToCallListenerAdapter.onClose(ClientCalls.java:434)
at io.grpc.PartialForwardingClientCallListener.onClose(PartialForwardingClientCa

how can I use this tool

when I put the location:http://localhost:8080/swagger-ui.html in the brower.
I got the follow excetpion:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Tue Nov 05 10:52:14 CST 2019
There was an unexpected error (type=Bad Request, status=400).
Required request body is missing: public io.grpc.grpcswagger.model.Result<java.lang.Object> io.grpc.grpcswagger.controller.GrpcController.invokeMethod(java.lang.String,java.lang.String)
org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public io.grpc.grpcswagger.model.Result<java.lang.Object> io.grpc.grpcswagger.controller.GrpcController.invokeMethod(java.lang.String,java.lang.String)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:160)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:130)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:126)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:166)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:90)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:117)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:106)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)

google.protobuf.UInt32value类型解析异常

我在swagger ui页面上,调用 try it out ,如果页面上的请求json字段 detail 是google.protobuf.UInt32value类型时如下图,后台会报json解析异常。凡是proto 文件里用 这种google.protobuf.xx类型(即请求带value字段的)定义字段的,try it out 都会解析异常。

请求json:
image

错误:
image

另外,请求字段的value为空时,json也会解析异常,如请求json:【name字段为空】
{
"price": {
"name": {},
}
}

header support

How to add header when calling grpc?
UseCase:

we are using jwt as head parameter(grpc md) to identify user info. So it's required to pass jwt token into md when debuging grpc.
How to do this in grpc-swagger?

Can't register :(

This seems like a great idea. Thanks for your efforts!

Regretfully, can't do the simplest test. Probably something I don't get, but I follow step by step and fail.

I have helloworld server started, testing it with evans and it works OK, here's .cap
evans.zip

But when I try to register this server with grpc-swagger, I get an error. Attached screenshot, log, cap:
grpc-swagger-fail.zip

You both do list_services (your for empty string, evans for *), and get same reply (as far as I can tell).
But then evans proceeds to inquire about individual services, while you don't.

Any ideas?
Maybe I could do something to further diagnose this?

Thanks in advance for any response!

Alex

OkGRPC

I’m developing a generic JVM client for gRPC, that can be used from code (primarily for testing), and in the terminal as an executable JAR. If you are willing, you are welcome to collaborate with me (in which case you’ll no longer need to main the grpc-swagger-core module) by using the client I developed. Further changes will then be done in the okgrpc-client.

https://github.com/asarkar/okgrpc

I looked at your core module, and I’ve lot more test coverage and simpler API. Like you, I was also inspired by polyglot project.

Good effort on this project, you’ve done a lot.

Automatic Register

First thanks for the tool. But exist any possibility to auto register the services and present all endpoints of all services in a unique swagger view to not to have to select one service one by one?

Regards

how to access `swagger-ui.html`

how to access swagger-ui.html like http://ui.grpcs.top/#/ does?
I only have grpc-swagger-web and a running grpc services.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.