1. Встановлення
Крок 0: Налаштування composer.json
Для того, щоб при додаванні пакету, ваш Symfony Flex автоматично зробив всі необхідні налаштування, потрібно внести наступні зміни в ваш composer.json
2
3
4
5
6
7
8
9
10
"extra" : {
"symfony": {
"endpoint": [
"https://api.github.com/repos/ufo-tech/recipes/contents/index.json?ref=main",
"flex://defaults"
]
}
},
}
Крок 1: Встановлення
В консолі в теці проєкту виконайте цю команду, щоб завантажити останню версію цього пакету:
Крок 2: Реєстрація пакету
Переконайтесь, що пакет автоматично зареєструвався в файлі config/bundles.php вашого проєкту:
2
3
4
5
6
7
return [
// ...
Ufo\JsonRpcBundle\UfoJsonRpcBundle::class => ['all' => true],
// ...
];
Крок 3: Додавання параметрів
В разі ручного налаштування бандлу, додайте config/packages файл ufo_json_rpc.yaml із таким вмістом:
до папки2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
security:
protected_methods: ['POST'] # Protection of GET and POST requests
token_key_in_header: 'Ufo-RPC-Token' # Name of the key in the header
clients_tokens:
- 'ClientTokenExample' # Hardcoded token example. Importantly!!! Replace or delete it!
- '%env(resolve:UFO_API_TOKEN)%' # Token example from .env.local
# Configuration for API documentation
docs:
# Optional response details
response:
key_for_methods: services # Key used to map services for API methods
# Information about validations
validations:
json_schema: false # Indicates if JSON-schema is used for method validation
symfony_asserts: false # Indicates if an array of Symfony validation constraints is used
Детальний огляд параметрів налаштування доступний в розділі Налаштування бандлу
Крок 4: Реєстрація маршрутів
config/routes файл ufo_json_rpc.yaml із таким вмістом:
В разі ручного налаштування бандлу, додайте до папки2
3
4
resource: ../../vendor/ufo-tech/json-rpc-bundle/config/router.yaml
prefix: /api
trailing_slash_on_root: false
Якщо лишити налаштування як є, то RPC API буде доступне по шляху /api наприклад https://example.com/api
Якщо вам потрібно змінити шлях, змініть налаштування маршруту таким чином:
2
3
4
resource: ../../vendor/ufo-tech/json-rpc-bundle/config/router.yaml
prefix: /my_custom_api_route #вкажіть тут альтернативний шлях
trailing_slash_on_root: false
Тепер API буде доступне по шляху https://example.com/my_custom_api_route
Крок 5: Profit
Що далі?
А воно точно працює? (с)
GET запит на точку входу поверне документацію по наявним методам і параметрам, які вони приймають.
GET: /api
"envelope": "JSON-RPC-2.0/UFO-RPC-6",
"contentType": "application/json",
"description": "",
"transport": {
"sync": {
"scheme": "https",
"host": "example.com",
"path": "/api",
"method": "POST"
}
},
"methods": {
"ping": {
"name": "ping",
"description": "",
"parameters": [],
"returns": "string",
"responseFormat": "string"
}
}
}
Метод ping встановлений одразу, ви можете одразу виконати POST запит, щоб переконатися, що сервер працює.
POST: /api
Request:
"id": "some_request_id",
"method": "ping"
}
Response:
"id": "some_request_id",
"result": "PONG"
}