解決 jsonrpc4j error code -32602 method parameters invalid 的錯誤
使用 briandilley/jsonrpc4j 時,server response 可能遇到這個錯誤: "error": { "code": -32602, "message": "method parameters invalid" } jsonrpc4j 會分析 input params 與 java method params 是不是一致,它會檢查 params 數量、名稱,如果沒有 mapping 就拋出錯誤了。 我們可以從 com.googlecode.jsonrpc4j.JsonRpcBasicServer Class 查看到,裡面的 private AMethodWithItsArgs findBestMethodByParamsNode(Set<Method> methods, JsonNode paramsNode) 就是在處理這塊,視 input 資料結構分別呼叫 findBestMethodUsingParamIndexes 或 findBestMethodUsingParamNames 處理。 接下來看 findBestMethodUsingParamNames 從這裡可以發現 jsonrpc4j 會檢查 params size是否一致、是否允許 allowExtraParams 與 allowLessParams。 解決方法: 若使用 spring boot 整合 jsonrpc4j,只要在 AutoJsonRpcServiceImplExporter 之處增加設定即可,例如: @Bean public static AutoJsonRpcServiceImplExporter autoJsonRpcServiceImplExporter() { AutoJsonRpcServiceImplExporter exp = new AutoJsonRpcServiceImplExporter(); exp.setAllowExtraParams(true); exp.setAllowLessParams(