Версія 10.3 додана 2024/05/08 20:40 автором Ashterix

Показати останніх авторів
1 {{box cssClass="floatinginfobox" width="400px" title="**Зміст**"}}
2 {{toc/}}
3 {{/box}}
4
5 = Крок 0: Налаштування composer.json =
6
7 Для того, щоб при додаванні пакету, ваш Symfony Flex автоматично зробив всі необхідні налаштування, потрібно внести наступні зміни в ваш {{code language="none"}}composer.json{{/code}}
8
9 {{code language="json"}}
10 {
11 "extra" : {
12 "symfony": {
13 "endpoint": [
14 "https://api.github.com/repos/ufo-tech/recipes/contents/index.json?ref=main",
15 "flex://defaults"
16 ]
17 }
18 },
19 }
20 {{/code}}
21
22 {{info}}
23 Детально про Symfony Flex в [[документації Symfony>>url:https://symfony.com/doc/current/setup/flex_private_recipes.html]]
24 {{/info}}
25
26
27 = Крок 1: Встановлення =
28
29 В консолі в теці проєкту виконайте цю команду, щоб завантажити останню версію цього пакету:
30
31 {{code language="bash"}}
32 composer require ufo-tech/json-rpc-bundle
33 {{/code}}
34
35 {{info}}
36 Ця команда актуальна якщо ви встановили Composer глобально, як описано в [[документації>>https://getcomposer.org/doc/00-intro.md]] Composer.
37 {{/info}}
38
39
40
41
42 = Крок 2: Реєстрація пакету =
43
44 Переконайтесь, що пакет автоматично зареєструвався в файлі {{code language="none"}}config/bundles.php{{/code}} вашого проєкту:
45
46 {{code language="php"}}
47 ['all' => true],
48 // ...
49 ];
50
51 {{/code}}
52
53
54
55 = Крок 3: Додавання параметрів =
56
57 {{warning}}
58 **Якщо ви виконали «Крок 0», це налаштовано автоматично і ви можете пропустити цей крок.**
59 {{/warning}}
60
61 В разі ручного налаштування бандлу, додайте (% id="cke_bm_4952S" style="display:none" %) (%%)до папки {{code language="none"}}config/packages{{/code}} файл {{code language="none"}}ufo_json_rpc.yaml{{/code}} із таким вмістом:
62
63 {{code language="yaml"}}
64 # config/packages/ufo_json_rpc.yaml
65 ufo_json_rpc:
66 security:
67 protected_methods: ['POST'] # Protection of GET and POST requests
68 token_key_in_header: 'Ufo-RPC-Token' # Name of the key in the header
69 clients_tokens:
70 - 'ClientTokenExample' # Hardcoded token example. Importantly!!! Replace or delete it!
71 - '%env(resolve:UFO_API_TOKEN)%' # Token example from .env.local
72
73 # Configuration for API documentation
74 docs:
75 # Optional response details
76 response:
77 key_for_methods: services # Key used to map services for API methods
78 # Information about validations
79 validations:
80 json_schema: false # Indicates if JSON-schema is used for method validation
81 symfony_asserts: false # Indicates if an array of Symfony validation constraints is used
82
83 {{/code}}
84
85 (% class="wikigeneratedid" %)
86 Детальний огляд параметрів налаштування доступний в розділі [[Налаштування бандлу>>doc:docs.JsonRpcBundle.config]]
87
88
89
90 = Крок 4: Реєстрація маршрутів =
91
92 {{warning}}
93 **Якщо ви виконали «Крок 0», це налаштовано автоматично і ви можете пропустити цей крок.**
94 {{/warning}}
95
96 (% id="cke_bm_19449S" style="display:none" %) (%%)В разі ручного налаштування бандлу, додайте (% id="cke_bm_4952S" style="display:none" %) (%%)до папки {{code language="none"}}config/routes{{/code}} файл {{code language="none"}}ufo_json_rpc.yaml{{/code}} із таким вмістом:
97
98 {{code language="yaml"}}
99 # config/routes/ufo_json_rpc.yaml
100 ufo_json_rpc:
101 resource: ../../vendor/ufo-tech/json-rpc-bundle/config/router.yaml
102 prefix: /api
103 trailing_slash_on_root: false
104 {{/code}}
105
106 Якщо лишити налаштування як є, то RPC API буде доступне по шляху {{code language="none"}}/api{{/code}} наприклад {{code language="none"}}https://example.com/api{{/code}}
107 Якщо вам потрібно змінити шлях, змініть налаштування маршруту таким чином:
108
109 {{code language="yaml"}}
110 # config/routes/ufo_json_rpc.yaml
111 ufo_json_rpc_bundle:
112 resource: ../../vendor/ufo-tech/json-rpc-bundle/config/router.yaml
113 prefix: /my_custom_api_route #вкажіть тут альтернативний шлях
114 trailing_slash_on_root: false
115 {{/code}}
116
117 Тепер API буде доступне по шляху {{code language="none"}}https://example.com/my_custom_api_route{{/code}}
118
119
120 = Крок 5: Profit =
121
122 {{success}}
123 **Вітаю!!!** Ваш RPC сервер готовий до роботи!!!
124 {{/success}}
125
126 == Що далі? ==
127
128 === Приклади використання ===
129
130 GET запит на точку входу поверне документацію по наявним методам і параметрам, які вони приймають.
131
132 **{{code language="none"}}GET: /api{{/code}}**
133
134 {{code language="json"}}
135 {
136 "transport": "POST",
137 "envelope": "JSON-RPC-2.0/UFO-RPC-6",
138 "contentType": "application/json",
139 "description": "",
140 "target": "/api",
141 "methods": {
142 "ping": {
143 "name": "ping",
144 "description": "",
145 "parameters": [],
146 "returns": "string",
147 "responseFormat": "string"
148 }
149 }
150 }
151 {{/code}}
152
153 Метод {{code language="none"}}ping{{/code}} встановлений одразу, ви можете одразу виконати POST запит, щоб переконатися, що сервер працює.
154
155 (% id="cke_bm_115746S" style="display:none" %)** **(%%)**{{code language="none"}}POST: /api{{/code}}**
156
157 **Request**:
158
159 {{code language="json"}}
160 {
161 "id": "some_request_id",
162 "method": "ping"
163 }
164 {{/code}}
165
166 **Response**:
167
168 {{code language="json"}}
169 {
170 "id": "some_request_id",
171 "result": "PONG"
172 }
173 {{/code}}