From 9fc952ac7c54feacc4e11ead07a38cdc2aec6b93 Mon Sep 17 00:00:00 2001 From: Toan Nguyen Date: Wed, 8 May 2019 11:03:07 +0700 Subject: [PATCH 1/3] use originalUrl for express routes --- src/middleware/express/make-http-request.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/middleware/express/make-http-request.ts b/src/middleware/express/make-http-request.ts index 43316365..2dd4148c 100644 --- a/src/middleware/express/make-http-request.ts +++ b/src/middleware/express/make-http-request.ts @@ -18,14 +18,18 @@ import * as http from 'http'; import {StackdriverHttpRequest} from '../../http-request'; +export interface ServerRequest extends http.IncomingMessage { + originalUrl?: string; +} + export function makeHttpRequestData( - req: http.IncomingMessage, + req: ServerRequest, res: http.ServerResponse, latencyMilliseconds: number ): StackdriverHttpRequest { return { status: res.statusCode, - requestUrl: req.url, + requestUrl: req.originalUrl || req.url, requestMethod: req.method, userAgent: req.headers['user-agent'], responseSize: From b47d429da45657873c895c7dd36733ce70201496 Mon Sep 17 00:00:00 2001 From: Toan Nguyen Date: Wed, 8 May 2019 11:03:07 +0700 Subject: [PATCH 2/3] use originalUrl for express routes --- src/middleware/express/make-http-request.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/middleware/express/make-http-request.ts b/src/middleware/express/make-http-request.ts index 43316365..2dd4148c 100644 --- a/src/middleware/express/make-http-request.ts +++ b/src/middleware/express/make-http-request.ts @@ -18,14 +18,18 @@ import * as http from 'http'; import {StackdriverHttpRequest} from '../../http-request'; +export interface ServerRequest extends http.IncomingMessage { + originalUrl?: string; +} + export function makeHttpRequestData( - req: http.IncomingMessage, + req: ServerRequest, res: http.ServerResponse, latencyMilliseconds: number ): StackdriverHttpRequest { return { status: res.statusCode, - requestUrl: req.url, + requestUrl: req.originalUrl || req.url, requestMethod: req.method, userAgent: req.headers['user-agent'], responseSize: From e2afd56bb82056fa09551dd141ee9c091a6e2e73 Mon Sep 17 00:00:00 2001 From: Toan Nguyen Date: Thu, 9 May 2019 16:37:00 +0700 Subject: [PATCH 3/3] merge master --- src/middleware/express/make-http-request.ts | 4 ++-- src/middleware/express/make-middleware.ts | 10 +++------- test/middleware/express/test-make-http-request.ts | 13 ++++++++----- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/middleware/express/make-http-request.ts b/src/middleware/express/make-http-request.ts index 2dd4148c..4933b8d0 100644 --- a/src/middleware/express/make-http-request.ts +++ b/src/middleware/express/make-http-request.ts @@ -19,7 +19,7 @@ import * as http from 'http'; import {StackdriverHttpRequest} from '../../http-request'; export interface ServerRequest extends http.IncomingMessage { - originalUrl?: string; + originalUrl: string; } export function makeHttpRequestData( @@ -29,7 +29,7 @@ export function makeHttpRequestData( ): StackdriverHttpRequest { return { status: res.statusCode, - requestUrl: req.originalUrl || req.url, + requestUrl: req.originalUrl, requestMethod: req.method, userAgent: req.headers['user-agent'], responseSize: diff --git a/src/middleware/express/make-middleware.ts b/src/middleware/express/make-middleware.ts index f7a3a504..50b5b873 100644 --- a/src/middleware/express/make-middleware.ts +++ b/src/middleware/express/make-middleware.ts @@ -18,10 +18,10 @@ import * as http from 'http'; import onFinished = require('on-finished'); import {getOrInjectContext, makeHeaderWrapper} from '../context'; -import {makeHttpRequestData} from './make-http-request'; +import {makeHttpRequestData, ServerRequest} from './make-http-request'; import {StackdriverHttpRequest} from '../../http-request'; -interface AnnotatedRequestType extends http.IncomingMessage { +interface AnnotatedRequestType extends ServerRequest { log: LoggerType; } @@ -46,11 +46,7 @@ export function makeMiddleware( makeChildLogger: (trace: string) => LoggerType, emitRequestLog?: (httpRequest: StackdriverHttpRequest, trace: string) => void ) { - return ( - req: http.IncomingMessage, - res: http.ServerResponse, - next: Function - ) => { + return (req: ServerRequest, res: http.ServerResponse, next: Function) => { // TODO(ofrobots): use high-resolution timer. const requestStartMs = Date.now(); diff --git a/test/middleware/express/test-make-http-request.ts b/test/middleware/express/test-make-http-request.ts index 08ca3b1f..3abbfe25 100644 --- a/test/middleware/express/test-make-http-request.ts +++ b/test/middleware/express/test-make-http-request.ts @@ -15,8 +15,11 @@ */ import * as assert from 'assert'; -import {IncomingMessage, ServerResponse} from 'http'; -import {makeHttpRequestData} from '../../../src/middleware/express/make-http-request'; +import {ServerResponse} from 'http'; +import { + makeHttpRequestData, + ServerRequest, +} from '../../../src/middleware/express/make-http-request'; describe('middleware/express/make-http-request', () => { it('should convert latency to proto Duration', () => { @@ -24,14 +27,14 @@ describe('middleware/express/make-http-request', () => { const fakeResponse = {}; const h1 = makeHttpRequestData( - fakeRequest as IncomingMessage, + fakeRequest as ServerRequest, fakeResponse as ServerResponse, 1003 ); assert.deepStrictEqual(h1.latency, {seconds: 1, nanos: 3e6}); const h2 = makeHttpRequestData( - fakeRequest as IncomingMessage, + fakeRequest as ServerRequest, fakeResponse as ServerResponse, 9003.1 ); @@ -39,7 +42,7 @@ describe('middleware/express/make-http-request', () => { // Make sure we nanos is uint32. const h3 = makeHttpRequestData( - fakeRequest as IncomingMessage, + fakeRequest as ServerRequest, fakeResponse as ServerResponse, 1.0000000001 );