Olá Homero.
Uma forma de você conseguir implementar o seu serviço conforme a necessidade informada, é por não criar os atributos da classe da API com o WSDATA. Neste caso você não terá um atributo específico para acessar os seus querystrings enviados na requisição. Então terá que implementar a captura deles por meio do seu código por meio do atributo aQueryString da classe WSRESTFUL.
Realizando a seguinte requisição na minha API de exemplo e printando o resultado do atributo aQueryString obtive o seguinte resultado:
Requisição:
http://localHost:8282/rest/restTest/QSWPoint?exemplo.test1=1&exemplo.test2=ola&exemplo.test3=mundo
API de exemplo:
#INCLUDE "TOTVS.CH"
#INCLUDE "RESTFUL.CH"
//-------------------------------------------------------------------
/*/{Protheus.doc} QueryStringWithPoint
Exemplo de API utilizando QueryString com pontos
@author author
@since 09/06/2022
@version 12.1.33
/*/
//-------------------------------------------------------------------
WSRESTFUL restTest DESCRIPTION "QueryString com pontos"
WSDATA Fields AS STRING OPTIONAL
WSDATA Order AS STRING OPTIONAL
WSDATA Page AS INTEGER OPTIONAL
WSDATA PageSize AS INTEGER OPTIONAL
WSMETHOD GET ;
DESCRIPTION "Exemplo com querystring utilizando pontos" ;
WSSYNTAX "/QSWPoint" ;
PATH "/QSWPoint";
PRODUCES APPLICATION_JSON
ENDWSRESTFUL
//-------------------------------------------------------------------
/*/{Protheus.doc} GET
Retorna os querystring
@author author
@since 09/06/2022
@version 12.1.33
/*/
//-------------------------------------------------------------------
WSMETHOD GET WSSERVICE restTest
varInfo("self:aQueryString", self:aQueryString)
::setResponse({"Dito"})
Return .T.
Resultado:
self:aQueryString -> ARRAY ( 3) [...]
self:aQueryString[1] -> ARRAY ( 2) [...]
self:aQueryString[1][1] -> C ( 13) [EXEMPLO.TEST1]
self:aQueryString[1][2] -> C ( 1) [1]
self:aQueryString[2] -> ARRAY ( 2) [...]
self:aQueryString[2][1] -> C ( 13) [EXEMPLO.TEST2]
self:aQueryString[2][2] -> C ( 3) [ola]
self:aQueryString[3] -> ARRAY ( 2) [...]
self:aQueryString[3][1] -> C ( 13) [EXEMPLO.TEST3]
self:aQueryString[3][2] -> C ( 5) [mundo]
Espero que ajude.