[QGIS-Developer] Inconsistency in QgsServerRequest parameter handling ?
pblottiere
paul.blottiere at oslandia.com
Wed Apr 10 14:21:22 PDT 2019
Hi David,
> If you try:
>
> request.setParameter('FOOBAR','foobar')
>
> then
>
> request.parameter('FOOBAR')
>
> then you get an empty string,
>> Even if I add an 'allowed' parameter by hand:
>>
>>> request.setParameter('FI_POINT_TOLERANCE','25')
Actually, QgsServerRequest and QgsServerParameters are high level
classes which are not aware of valid parameters defined in services. For
example, FI_POINT_TOLERANCE is a valid parameter in WMS service, and
defined within the WMS module. But it's totally encapsulated within the
module (a shared library so), and considered as unknown from
QgsServerParameters. The only valid parameters from the
QgsServerParameters point of view are those which are common for all
services (WMS, WFS, and so on) like SERVICE, VERSION, REQUEST, ...
If you want to retrieve the full query from the request without any
filter on valid parameters, you may use request.url(). However, I think
we could probably add a fallback on the `parameter()` method to return
invalid parameters too. I'll do a PR tomorrow and I'll ping you to check
if the behaviour suits you.
Regards,
Paul
On 4/10/19 10:37 PM, David Marteau wrote:
> To add some precision:
>
> Even if I add an 'allowed' parameter by hand:
>
>> request.setParameter('FI_POINT_TOLERANCE','25')
> then
>
>> request.parameter('FI_POINT_TOLERANCE')
> return an empty string
>
>> Le 10 avr. 2019 à 19:46, David Marteau <dmarteau at 3liz.com> a écrit :
>>
>>
>> Hi devs,
>>
>> I found a strange and seemingly inconsistent behavior when accessing QgsServerRequest parameters:
>>
>> If you try:
>>
>> request.setParameter('FOOBAR','foobar')
>>
>> then
>>
>> request.parameter('FOOBAR')
>>
>> then you get an empty string,
>>
>> If you call
>>
>> request.parameters()
>>
>> Then your get a dictionary with all the values previously set.
>>
>> At first glance it seems that request.setParameter enforce use of a limited set of keys (SERVICE…..
>>
>> This does not seem very consistent with the fact parameter() should return any value previously set with setParameter and also the fact that
>> request.parameters() return all previously defined parameters key/values .
>>
>> Furthemore this may be problematic with plugins that define services in python and thus may define any other set of allowed parameters.
>>
>> Should I open an issue ?
>>
>> David
More information about the QGIS-Developer
mailing list