ankraft / ACME-oneM2M-CSE

An open source CSE Middleware for Education.
https://acmecse.net/
BSD 3-Clause "New" or "Revised" License
23 stars 16 forks source link

multiple occurrance of parameters in query string #43

Closed Spongman closed 4 years ago

Spongman commented 4 years ago

TS-0009, 6.2.2.2 "Query Component":

Parameters with multiplicity ‘0..n’, may occur multiple times in the query-string in the form of = value. For example, if the resourceType element of the Filter Criteria parameter is represented by a list of 3 values ‘2 3 4’ (see clause 6.3.4.7 in TS-0004 [3]), it would be mapped to ty=2+3+4 in the query-string. At the receiver side, this query string can be reverted back into the list type of representation. The same representation shall be applied for multiple occurrences of contentType and labels elements.

(( IMHO this encoding of multiple-valued parameters is much less desirable than the one used by browsers to transmit multi-select

this code doesn't support the key=value1+value2 encoding: /id-in?fu=1&rcn=8&ty=28+52 returns

{}

whereas /id-in?fu=1&rcn=8&ty=28&ty=52 returns

{
    "acme:csest": [
        {
            "rn": "statistics",
            "cnd": "acme.statistics",
            "acpi": [
                "acp1028273287565921797"
            ],
            "mni": 10,
            "rmRes": 769,
            "crRes": 788,
            "htRet": 1765,
            "htCre": 6,
            "htUpd": 779,
            "htDel": 0,
            "lgErr": 4,
            "lgWrn": 1560,
            "cseSU": "20200610T032059,778926",
            "cseUT": "2:09:27",
            "ctRes": 19,
            "ri": "csest2319516495356652035",
            "ct": "20200609T200338,971435",
            "lt": "20200609T223027,795302",
            "et": "20210609T200338,971524",
            "pi": "CX677vJit2W",
            "st": 786,
            "ty": 28,
            "cs": 375,
            "cr": "CX677vJit2W",
            "cni": 10,
            "acme:csest": [
                {
                    "rn": "statistics_777",
                    "ct": "20200609T222852,666985",
                    "et": "20210609T200338,971524",
                    "cs": 375,
                    "or": "CX677vJit2W",
                    "rmRes": 760,
                    "crRes": 779,
                    "htRet": 1622,
                    "htCre": 6,
                    "htUpd": 770,
                    "htDel": 0,
                    "lgErr": 4,
                    "lgWrn": 1542,
                    "cseSU": "20200610T032059,778926",
                    "cseUT": "2:07:52",
                    "ctRes": 19,
                    "acpi": [
                        "acp1028273287565921797"
                    ],
                    "ri": "csest1371316697918218744",
                    "lt": "20200609T222852,682530",
                    "pi": "csest2319516495356652035",
                    "st": 0,
                    "ty": 52
                },
                {
                    "rn": "statistics_778",
                    "ct": "20200609T222903,773534",
                    "et": "20210609T200338,971524",
                    "cs": 375,
                    "or": "CX677vJit2W",
                    "rmRes": 761,
                    "crRes": 780,
                    "htRet": 1643,
                    "htCre": 6,
                    "htUpd": 771,
                    "htDel": 0,
                    "lgErr": 4,
                    "lgWrn": 1544,
                    "cseSU": "20200610T032059,778926",
                    "cseUT": "2:08:03",
                    "ctRes": 19,
                    "acpi": [
                        "acp1028273287565921797"
                    ],
                    "ri": "csest5112893450959866184",
                    "lt": "20200609T222903,884130",
                    "pi": "csest2319516495356652035",
                    "st": 0,
                    "ty": 52
                },
                {
                    "rn": "statistics_779",
                    "ct": "20200609T222914,478786",
                    "et": "20210609T200338,971524",
                    "cs": 375,
                    "or": "CX677vJit2W",
                    "rmRes": 762,
                    "crRes": 781,
                    "htRet": 1663,
                    "htCre": 6,
                    "htUpd": 772,
                    "htDel": 0,
                    "lgErr": 4,
                    "lgWrn": 1546,
                    "cseSU": "20200610T032059,778926",
                    "cseUT": "2:08:14",
                    "ctRes": 19,
                    "acpi": [
                        "acp1028273287565921797"
                    ],
                    "ri": "csest6852710586748696449",
                    "lt": "20200609T222914,517521",
                    "pi": "csest2319516495356652035",
                    "st": 0,
                    "ty": 52
                },
                {
                    "rn": "statistics_780",
                    "ct": "20200609T222925,454350",
                    "et": "20210609T200338,971524",
                    "cs": 375,
                    "or": "CX677vJit2W",
                    "rmRes": 763,
                    "crRes": 782,
                    "htRet": 1700,
                    "htCre": 6,
                    "htUpd": 773,
                    "htDel": 0,
                    "lgErr": 4,
                    "lgWrn": 1548,
                    "cseSU": "20200610T032059,778926",
                    "cseUT": "2:08:25",
                    "ctRes": 19,
                    "acpi": [
                        "acp1028273287565921797"
                    ],
                    "ri": "csest6394028521532319831",
                    "lt": "20200609T222925,469891",
                    "pi": "csest2319516495356652035",
                    "st": 0,
                    "ty": 52
                },
                {
                    "rn": "statistics_781",
                    "ct": "20200609T222935,817785",
                    "et": "20210609T200338,971524",
                    "cs": 375,
                    "or": "CX677vJit2W",
                    "rmRes": 764,
                    "crRes": 783,
                    "htRet": 1700,
                    "htCre": 6,
                    "htUpd": 774,
                    "htDel": 0,
                    "lgErr": 4,
                    "lgWrn": 1550,
                    "cseSU": "20200610T032059,778926",
                    "cseUT": "2:08:35",
                    "ctRes": 19,
                    "acpi": [
                        "acp1028273287565921797"
                    ],
                    "ri": "csest7346541260555276372",
                    "lt": "20200609T222935,832206",
                    "pi": "csest2319516495356652035",
                    "st": 0,
                    "ty": 52
                },
                {
                    "rn": "statistics_782",
                    "ct": "20200609T222946,181002",
                    "et": "20210609T200338,971524",
                    "cs": 375,
                    "or": "CX677vJit2W",
                    "rmRes": 765,
                    "crRes": 784,
                    "htRet": 1700,
                    "htCre": 6,
                    "htUpd": 775,
                    "htDel": 0,
                    "lgErr": 4,
                    "lgWrn": 1552,
                    "cseSU": "20200610T032059,778926",
                    "cseUT": "2:08:46",
                    "ctRes": 19,
                    "acpi": [
                        "acp1028273287565921797"
                    ],
                    "ri": "csest6366505983503278387",
                    "lt": "20200609T222946,195991",
                    "pi": "csest2319516495356652035",
                    "st": 0,
                    "ty": 52
                },
                {
                    "rn": "statistics_783",
                    "ct": "20200609T222956,616960",
                    "et": "20210609T200338,971524",
                    "cs": 375,
                    "or": "CX677vJit2W",
                    "rmRes": 766,
                    "crRes": 785,
                    "htRet": 1726,
                    "htCre": 6,
                    "htUpd": 776,
                    "htDel": 0,
                    "lgErr": 4,
                    "lgWrn": 1554,
                    "cseSU": "20200610T032059,778926",
                    "cseUT": "2:08:56",
                    "ctRes": 19,
                    "acpi": [
                        "acp1028273287565921797"
                    ],
                    "ri": "csest1065743719070142612",
                    "lt": "20200609T222956,632107",
                    "pi": "csest2319516495356652035",
                    "st": 0,
                    "ty": 52
                },
                {
                    "rn": "statistics_784",
                    "ct": "20200609T223006,998955",
                    "et": "20210609T200338,971524",
                    "cs": 375,
                    "or": "CX677vJit2W",
                    "rmRes": 767,
                    "crRes": 786,
                    "htRet": 1726,
                    "htCre": 6,
                    "htUpd": 777,
                    "htDel": 0,
                    "lgErr": 4,
                    "lgWrn": 1556,
                    "cseSU": "20200610T032059,778926",
                    "cseUT": "2:09:07",
                    "ctRes": 19,
                    "acpi": [
                        "acp1028273287565921797"
                    ],
                    "ri": "csest7747391690018505637",
                    "lt": "20200609T223007,014283",
                    "pi": "csest2319516495356652035",
                    "st": 0,
                    "ty": 52
                },
                {
                    "rn": "statistics_785",
                    "ct": "20200609T223017,406038",
                    "et": "20210609T200338,971524",
                    "cs": 375,
                    "or": "CX677vJit2W",
                    "rmRes": 768,
                    "crRes": 787,
                    "htRet": 1752,
                    "htCre": 6,
                    "htUpd": 778,
                    "htDel": 0,
                    "lgErr": 4,
                    "lgWrn": 1558,
                    "cseSU": "20200610T032059,778926",
                    "cseUT": "2:09:17",
                    "ctRes": 19,
                    "acpi": [
                        "acp1028273287565921797"
                    ],
                    "ri": "csest2854829023153885085",
                    "lt": "20200609T223017,420553",
                    "pi": "csest2319516495356652035",
                    "st": 0,
                    "ty": 52
                },
                {
                    "rn": "statistics_786",
                    "ct": "20200609T223027,795302",
                    "et": "20210609T200338,971524",
                    "cs": 375,
                    "or": "CX677vJit2W",
                    "rmRes": 769,
                    "crRes": 788,
                    "htRet": 1765,
                    "htCre": 6,
                    "htUpd": 779,
                    "htDel": 0,
                    "lgErr": 4,
                    "lgWrn": 1560,
                    "cseSU": "20200610T032059,778926",
                    "cseUT": "2:09:27",
                    "ctRes": 19,
                    "acpi": [
                        "acp1028273287565921797"
                    ],
                    "ri": "csest7570597054332285404",
                    "lt": "20200609T223027,810095",
                    "pi": "csest2319516495356652035",
                    "st": 0,
                    "ty": 52
                }
            ]
        }
    ]
}
ankraft commented 4 years ago

Right, though imho multiple occurrences are easier to read, the encoding defined in TS-0009 must be supported.

ankraft commented 4 years ago

Both methods (ty=1+2+3 and ty=1&ty=2&=3) are now supported. You can even mix both methods.