diff --git a/api/context.go b/api/context.go index 637b60a0399d7e764e100264efa25597f2db1201..134c5566446964749887edf53a81c2b85a8bb9a0 100644 --- a/api/context.go +++ b/api/context.go @@ -1,6 +1,7 @@ package api import ( + "encoding/csv" "encoding/json" "reflect" "strings" @@ -101,7 +102,12 @@ func (ctx apiContext) extract(name string, t reflect.Type, v reflect.Value) erro var paramStrValues []string if paramStrValue, isDefined := ctx.request.QueryStringParameters[n]; isDefined { if len(paramStrValue) >= 2 && paramStrValue[0] == '[' && paramStrValue[len(paramStrValue)-1] == ']' { - paramStrValues = strings.Split(paramStrValue[1:len(paramStrValue)-1], ",") //from [CSV] + csvReader := csv.NewReader(strings.NewReader(paramStrValue)) + var err error + paramStrValues, err = csvReader.Read() + if err != nil { + return errors.Wrapf(err, "invalid CSV") + } } else { paramStrValues = []string{paramStrValue} //single value }