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

Сховати останніх авторів
Ashterix 7.2 1 {{box cssClass="floatinginfobox" width="400px" title="**Зміст**"}}
Ashterix 1.1 2 {{toc/}}
3 {{/box}}
4
Ashterix 7.2 5 = Крок 0: Налаштування composer.json =
Ashterix 1.1 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
Ashterix 6.2 22 {{info}}
Ashterix 8.1 23 Детально про Symfony Flex в [[документації Symfony>>url:https://symfony.com/doc/current/setup/flex_private_recipes.html]]
Ashterix 6.2 24 {{/info}}
Ashterix 1.1 25
Ashterix 7.2 26
Ashterix 7.1 27 = Крок 1: Встановлення =
Ashterix 1.1 28
29 В консолі в теці проєкту виконайте цю команду, щоб завантажити останню версію цього пакету:
30
31 {{code language="bash"}}
Ashterix 6.1 32 composer require ufo-tech/json-rpc-bundle
Ashterix 1.1 33 {{/code}}
34
Ashterix 6.2 35 {{info}}
36 Ця команда актуальна якщо ви встановили Composer глобально, як описано в [[документації>>https://getcomposer.org/doc/00-intro.md]] Composer.
37 {{/info}}
Ashterix 1.1 38
Ashterix 7.2 39
40
Ashterix 8.3 41
Ashterix 7.2 42 = Крок 2: Реєстрація пакету =
43
44 Переконайтесь, що пакет автоматично зареєструвався в файлі {{code language="none"}}config/bundles.php{{/code}} вашого проєкту:
45
46 {{code language="php"}}
Ashterix 8.2 47 ['all' => true],
Ashterix 7.2 48 // ...
49 ];
50
51 {{/code}}
52
53
54
55 = Крок 3: Додавання параметрів =
56
57 {{warning}}
58 **Якщо ви виконали «Крок 0», це налаштовано автоматично і ви можете пропустити цей крок.**
59 {{/warning}}
60
Ashterix 7.3 61 В разі ручного налаштування бандлу, додайте (% id="cke_bm_4952S" style="display:none" %) (%%)до папки {{code language="none"}}config/packages{{/code}} файл {{code language="none"}}ufo_json_rpc.yaml{{/code}} із таким вмістом:
Ashterix 7.2 62
Ashterix 7.3 63 {{code language="yaml"}}
64 # config/packages/ufo_json_rpc.yaml
65 ufo_json_rpc:
66 security:
Ashterix 10.3 67 protected_methods: ['POST'] # Protection of GET and POST requests
Ashterix 7.3 68 token_key_in_header: 'Ufo-RPC-Token' # Name of the key in the header
69 clients_tokens:
Ashterix 10.3 70 - 'ClientTokenExample' # Hardcoded token example. Importantly!!! Replace or delete it!
71 - '%env(resolve:UFO_API_TOKEN)%' # Token example from .env.local
Ashterix 7.3 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
Ashterix 7.2 82
Ashterix 7.3 83 {{/code}}
Ashterix 7.2 84
Ashterix 7.3 85 (% class="wikigeneratedid" %)
Ashterix 7.4 86 Детальний огляд параметрів налаштування доступний в розділі [[Налаштування бандлу>>doc:docs.JsonRpcBundle.config]]
Ashterix 7.2 87
Ashterix 8.3 88
89
Ashterix 7.3 90 = Крок 4: Реєстрація маршрутів =
Ashterix 7.2 91
Ashterix 7.3 92 {{warning}}
93 **Якщо ви виконали «Крок 0», це налаштовано автоматично і ви можете пропустити цей крок.**
94 {{/warning}}
Ashterix 7.2 95
Ashterix 7.3 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}} із таким вмістом:
Ashterix 7.2 97
Ashterix 7.3 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
Ashterix 10.2 106 Якщо лишити налаштування як є, то RPC API буде доступне по шляху {{code language="none"}}/api{{/code}} наприклад {{code language="none"}}https://example.com/api{{/code}}
107 Якщо вам потрібно змінити шлях, змініть налаштування маршруту таким чином:
Ashterix 7.3 108
Ashterix 10.2 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}}
Ashterix 7.3 116
Ashterix 10.2 117 Тепер API буде доступне по шляху {{code language="none"}}https://example.com/my_custom_api_route{{/code}}
Ashterix 7.3 118
Ashterix 10.3 119
120 = Крок 5: Profit =
121
Ashterix 10.2 122 {{success}}
123 **Вітаю!!!** Ваш RPC сервер готовий до роботи!!!
124 {{/success}}
Ashterix 1.1 125
Ashterix 10.3 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}}