我正在使用Grails(3.3.9)应用程序作为一种网关。我将ajax请求发送到grails控制器,添加一些标头,然后将它们重新发送到另一个资源。
我的URL映射如下:
DECLARE @LastName varchar (50) = 'LAST'
DECLARE @Zip NUMERIC (5) = 1
DECLARE @Race varchar (10) = '1'
DECLARE @SQL AS NVARCHAR(MAX),
@WHERE AS NVARCHAR(MAX) = '';
SELECT @SQL = 'SELECT *
FROM myTable';
IF LEN(@LastName) > 0
SELECT @WHERE = @WHERE + 'LastName = ''' + @LastName + '''';
IF LEN(@Zip) > 0
IF LEN(@WHERE) > 0
SELECT @WHERE = @WHERE + ' AND ZIP = ''' + CONVERT(NVARCHAR(18), @Zip) + '''';;
ELSE
SELECT @WHERE = 'ZIP = ' + CONVERT(NVARCHAR(18), @Zip) ;
IF LEN(@Race) > 0
IF LEN(@WHERE) > 0
SELECT @WHERE = @WHERE + ' AND Race = ''' + @Race + '''';
ELSE
SELECT @WHERE = 'Race = ''' + @Race + '''';
IF LEN(@WHERE) > 0
SELECT @SQL = @SQL + ' WHERE ' + @WHERE
-- PRINT @SQL
EXEC sp_ExecuteSQL @SQL
在控制器中,我按以下方式拦截它们:
static mappings = {
...
"/message/api/${uri}**"(controller: 'message', action: 'api')
...
}
问题在于,def api(String uri) {
...
String url = "${MESSAGE_SERVICE_URL}/api/" + uri
...
//then I resend the request to a super secret resource
}
变量如果最初传递给bakend,则不包含GET参数。
是否有可能配置URL映射(或其他任何方式)以能够无缝地接收“绑定”到控制器内部uri
变量的GET参数?无法从uri
映射中解析它们。