From 5467b24c7805170c33126b9a006ccced0c843c10 Mon Sep 17 00:00:00 2001 From: George Pchelkin Date: Wed, 25 Oct 2023 13:50:18 +0100 Subject: [PATCH 1/2] fix and sync nginx configs --- README.md | 4 +++- example/gateway/conf/server.conf | 18 ++++++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 743a8a0..a53a727 100644 --- a/README.md +++ b/README.md @@ -52,8 +52,9 @@ In order to transform from REST to gRPC completely, you need to use three of hoo ```lua ## 0. prepare proto file import_paths init_by_lua_block { + -- Define global import paths PROTOC_IMPORT_PATHS = { - "/usr/local/include" + "/usr/local/protoc/include" } } @@ -102,6 +103,7 @@ server { ngx.header["Content-Type"] = "application/json" } + grpc_set_header TE trailers; grpc_set_header Content-Type application/grpc; grpc_pass localhost:9000; } diff --git a/example/gateway/conf/server.conf b/example/gateway/conf/server.conf index 12289eb..26d9d18 100644 --- a/example/gateway/conf/server.conf +++ b/example/gateway/conf/server.conf @@ -25,36 +25,42 @@ server { } location /rest { + +## 1. Transform request from REST to gRPC access_by_lua_block { local proto = require("grpc-gateway.proto") - local gateway = require("grpc-gateway.request") + local grequest = require("grpc-gateway.request") local p, err = proto.new("/etc/proto/helloworld.proto") if err then ngx.log(ngx.ERR, ("proto load error: %s"):format(err)) return end - local req = gateway.new(p) + local req = grequest.new(p) err = req:transform("helloworld.Greeter", "SayHello") if err then - ngx.log(ngx.ERR, ("trasnform request error: %s"):format(err)) + ngx.log(ngx.ERR, ("transform request error: %s"):format(err)) return end } + +## 2. Transform response from gPRC to JSON body_filter_by_lua_block { local proto = require("grpc-gateway.proto") - local gateway = require("grpc-gateway.response") + local gresponse = require("grpc-gateway.response") local p, err = proto.new("/etc/proto/helloworld.proto") if err then ngx.log(ngx.ERR, ("proto load error: %s"):format(err)) return end - local resp = gateway.new(p) + local resp = gresponse.new(p) err = resp:transform("helloworld.Greeter", "SayHello") if err then - ngx.log(ngx.ERR, ("trasnform response error: %s"):format(err)) + ngx.log(ngx.ERR, ("transform response error: %s"):format(err)) return end } + +## 3. Swap response header to `Content-Type: application/json` header_filter_by_lua_block { ngx.header["Content-Type"] = "application/json" } From 9cc53baa2190196f088dcdffd8d76a0574aca17a Mon Sep 17 00:00:00 2001 From: George Pchelkin Date: Wed, 25 Oct 2023 13:51:37 +0100 Subject: [PATCH 2/2] fix and sync nginx configs --- example/gateway/conf/server.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/example/gateway/conf/server.conf b/example/gateway/conf/server.conf index 26d9d18..ac66923 100644 --- a/example/gateway/conf/server.conf +++ b/example/gateway/conf/server.conf @@ -1,5 +1,6 @@ lua_code_cache off; +## 0. prepare proto file import_paths init_by_lua_block { -- Define global import paths PROTOC_IMPORT_PATHS = {