api/router: avoid unneeded loops and fix path match (#1594)

* api/router: avoid unneeded loops and fix path match

* if match found in google api path syntax, not try pcre loop
* if path is not ending via $ sign, append it to pcre to avoid matching other strings like
  /api/account/register can be matched to /api/account
* api: add tests and validations

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
2020-04-29 15:23:10 +03:00
parent ac3ce1ec16
commit 19a313ac4e
4 changed files with 178 additions and 15 deletions

View File

@@ -6,7 +6,12 @@ service Test {
rpc Call(Request) returns (Response) {
option (google.api.http) = { post: "/api/v0/test/call/{uuid}"; body:"*"; };
};
rpc CallPcre(Request) returns (Response) {
option (google.api.http) = { post: "^/api/v0/test/call/pcre/?$"; body:"*"; };
};
rpc CallPcreInvalid(Request) returns (Response) {
option (google.api.http) = { post: "^/api/v0/test/call/pcre/invalid/?"; body:"*"; };
};
}
message Request {