我已經(OData的)查詢參數在我的路線定義,像這樣:阿卡HTTP不處理與美元符號正確的參數?
parameters(('$top.as[Int].?, '$skip.as[Int].?)) { (top, skip) =>
我有以下的拒絕處理程序來處理所有無效的參數(handleAll):
RejectionHandler.newBuilder()
.handleAll[MalformedQueryParamRejection] { paramRejections =>
// paramRejections is a Seq[MalformedQueryParamRejection]
...
}
的問題是,當調用以下
some-endpoint?$top=invalid&$skip=invalid
在拒絕處理的paramRejections
有2項,都爲$頂部,而不是一個$頂部,一個爲$跳過。 ,
似乎與美元符號存在params,因爲當我刪除這個事情按預期工作。這是一個已知的問題或是否有可用的解決方法(不包括移除美元符號)?
請注意,它似乎是它唯一的拒絕處理程序,它具有以美元符號開頭的多個參數的問題,因爲在$ top和$ skip提供有效的情況下,路徑中的此行正確指定top並跳轉到變量值的URI:
parameters(('$top.as[Int].?, '$skip.as[Int].?)) { (top, skip) =>
請問這個問題百分號編碼的幫助? '%24top ='而不是'$ top ='。美元符號被保留爲子分隔符並且只有在編碼百分比時才被正確解析。在我的複製中它工作得很好。 –
不可以,客戶應該被允許使用美元符號,根據OData標準:http://www.odata.org/documentation/odata-version-2-0/uri-conventions/ – Rory
@chunjef這是不相干的,所有重要的是提供給handleAll的參數拒絕是不正確的,如我的問題 – Rory