JsonRPC

Описание

Для взаимодействия с сервером клиентских приложений в apx используется протокол JsonRPC.

Суть в следующем: выбирается некий DaoHolder и предоставляется http-интерфейс для выполнения его методов через определенную entry-point.

По умолчанию в apx настроена entry-point с именем api, которая транслирует методы DaoHolder с именем api:

<root>
    <web>
        <action name="api"
                class="jandcode.core.apx.jsonrpc.JsonRpcAction"
                daoHolder="api"/>
    </web>
</root>

Web-action jandcode.core.apx.jsonrpc.JsonRpcAction является обработчиком JsonRPC.

Можно настраивать различные entry-point для нужных DaoHolder в приложении по смоему усмотрению:

<root>
    <web>
        <action name="api"
                class="jandcode.core.apx.jsonrpc.JsonRpcAction"
                daoHolder="api"/>
        <action name="api-v2"
                class="jandcode.core.apx.jsonrpc.JsonRpcAction"
                daoHolder="api-new"/>
    </web>
</root>

Запросы и параметры

Тип запроса должен быть POST.

Арибут "jsonrpc": "2.0" является не обязательным.

В качестве параметров можно указывать объект, который содержит поименнованные параметры метода:

POST http://localhost:8080/jc/api
Content-Type: application/json

{
  "id": "1",
  "method": "my/dao1",
  "params": {
    "id": 1215
  }
}

Так же в качестве параметров можно указывать массив, которые содержит позиционные параметры метода:

POST http://localhost:8080/jc/api
Content-Type: application/json

{
  "id": "1",
  "method": "my/dao1",
  "params": [1215]
}