Skip to content

Commit af8624d

Browse files
Bizleysamdark
authored andcommitted
[docs] PL (#96) [skip ci]
1 parent 2f3ad95 commit af8624d

12 files changed

+765
-0
lines changed

docs/guide-pl/README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
Klient HTTP dla Yii 2
2+
=====================
3+
4+
To rozszerzenie dodaje funkcjonalność klienta HTTP dla [platformy Yii 2.0](http://www.yiiframework.com).
5+
6+
7+
Przygotowanie
8+
-------------
9+
10+
* [Instalacja](installation.md)
11+
* [Podstawy użytkowania](basic-usage.md)
12+
13+
Funkcjonalność
14+
--------------
15+
16+
* [Formatowanie danych](usage-data-formats.md)
17+
* [Przesyłanie danych](usage-transports.md)
18+
* [Opcje żądania](usage-request-options.md)
19+
* [Treść wieloczęściowa](usage-multi-part-content.md)
20+
* [Wysyłanie serii żądań](usage-batch-request-sending.md)
21+
* [Zdarzenia](usage-events.md)
22+
* [Logowanie i profilowanie](usage-logging.md)
23+
* [Konfigurowanie instancji klienta](usage-setup-client-instance.md)
24+
25+
Dodatkowe tematy
26+
----------------
27+
28+
* [Korzystanie z panelu debugowania klienta HTTP](topics-debug.md)

docs/guide-pl/basic-usage.md

Lines changed: 214 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,214 @@
1+
Podstawy użytkowania
2+
====================
3+
4+
W celu wysłania żądania HTTP konieczne jest zainicjowanie obiektu [[\yii\httpclient\Client]] i użycie jego metody `createRequest()`.
5+
Następnie należy skonfigurować wszystkie parametry tego żądania według własnych potrzeb i tak przygotowane wysłać.
6+
W rezultacie otrzymujemy obiekt [[\yii\httpclient\Response]], który przechowuje wszystkie informacje odpowiedzi.
7+
Przykładowo:
8+
9+
```php
10+
use yii\httpclient\Client;
11+
12+
$client = new Client();
13+
$response = $client->createRequest()
14+
->setMethod('post')
15+
->setUrl('http://example.com/api/1.0/users')
16+
->setData(['name' => 'John Doe', 'email' => 'johndoe@example.com'])
17+
->send();
18+
if ($response->isOk) {
19+
$newUserId = $response->data['id'];
20+
}
21+
```
22+
23+
Aby uprościć przygotowywanie żądania, można użyć skrótowych metod `get()`, `post()`, `put()`, itd.
24+
W przypadku korzystania z pojedynczej instancji [[\yii\httpclient\Client]] dla wielu żądań skierowanych do tej samej domeny
25+
(np. łącząc się z REST API), można ustawić tę domenę jako wartość właściwości `baseUrl`. Pozwala to na określanie jedynie
26+
relatywnych adresów URL podczas tworzenia żądania.
27+
Dzięki temu kilka następujących po sobie żądań skierowanych do jakiegoś REST API może wyglądać jak poniżej:
28+
29+
```php
30+
use yii\httpclient\Client;
31+
32+
$client = new Client(['baseUrl' => 'http://example.com/api/1.0']);
33+
34+
$newUserResponse = $client->post('users', ['name' => 'John Doe', 'email' => 'johndoe@example.com'])->send();
35+
$articleResponse = $client->get('articles', ['name' => 'Yii 2.0'])->send();
36+
$client->post('subscriptions', ['user_id' => $newUserResponse->data['id'], 'article_id' => $articleResponse->data['id']])->send();
37+
```
38+
39+
40+
## Korzystanie z różnych formatów treści
41+
42+
Dane żądania HTTP są domyślnie przesyłane w formacie 'form-urlencoded', np. `param1=value1&param2=value2`.
43+
Jest on powszechnie wykorzystywany w formularzach web, ale już nie dla REST API, które zwykle wymaga treści w formacie
44+
JSON lub XML. Format żądania można ustawić za pomocą właściwości `format` lub metody `setFormat()`.
45+
Wspierane są następujące formaty:
46+
47+
- [[\yii\httpclient\Client::FORMAT_JSON]] - format JSON,
48+
- [[\yii\httpclient\Client::FORMAT_URLENCODED]] - łańcuch znaków kwerendy zakodowany wg wytycznych dokumentu RFC1738,
49+
- [[\yii\httpclient\Client::FORMAT_RAW_URLENCODED]] - łańcuch znaków kwerendy zakodowany z opcjami predefiniowanej stałej PHP_QUERY_RFC3986,
50+
- [[\yii\httpclient\Client::FORMAT_XML]] - format XML.
51+
52+
Przykładowo:
53+
54+
```php
55+
use yii\httpclient\Client;
56+
57+
$client = new Client(['baseUrl' => 'http://example.com/api/1.0']);
58+
$response = $client->createRequest()
59+
->setFormat(Client::FORMAT_JSON)
60+
->setUrl('articles/search')
61+
->setData([
62+
'query_string' => 'Yii',
63+
'filter' => [
64+
'date' => ['>' => '2015-08-01']
65+
],
66+
])
67+
->send();
68+
```
69+
70+
Obiekt odpowiedzi automatycznie rozpoznaje jej format, opierając się na nagłówku 'Content-Type' i samej treści, zatem
71+
w większości przypadków nie jest wymagane określanie tego formatu, wystarczy przetworzyć ją używając metody `getData()`
72+
lub właściwości `data`. Rozwijając powyższy przykład, można otrzymać dane odpowiedzi następująco:
73+
74+
```php
75+
$responseData = $response->getData(); // pobierz wszystkie artykuły
76+
count($response->data) // policz artykuły
77+
$article = $response->data[0] // pobierz pierwszy artykuł
78+
```
79+
80+
81+
## Praca z niesformatowaną treścią
82+
83+
Korzystanie z wbudowanych formaterów nie jest obowiązkowe. Można skonfigurować żądanie HTTP, aby przekazywało
84+
niesformatowaną treść i jednocześnie można przetwarzać niesformatowaną treść uzyskaną w odpowiedzi. Dla przykładu:
85+
86+
```php
87+
use yii\httpclient\Client;
88+
89+
$client = new Client(['baseUrl' => 'http://example.com/api/1.0']);
90+
$response = $client->createRequest()
91+
->setUrl('articles/search')
92+
->addHeaders(['content-type' => 'application/json'])
93+
->setContent('{query_string: "Yii"}')
94+
->send();
95+
96+
echo 'Search results:<br>';
97+
echo $response->content;
98+
```
99+
100+
[[\yii\httpclient\Request]] formatuje przekazywane `data`, tylko jeśli `content` nie jest ustawiony.
101+
[[\yii\httpclient\Response]] przetwarza `content`, tylko jeśli `data` jest wywołane.
102+
103+
104+
## Prekonfiguracja obiektów żądania i odpowiedzi
105+
106+
Używając pojedynczej instancji [[\yii\httpclient\Client]] dla kilku podobnych żądań, przykładowo pracując z REST API,
107+
można uprościć i przyspieszyć pisanie kodu, dodając własną konfigurację dla obiektów żądania i odpowiedzi. Można to
108+
zrobić korzystając z pól `requestConfig` i `responseConfig` w [[\yii\httpclient\Client]].
109+
Przykładowo, aby ustawić format JSON dla wszystkich żądań klienta:
110+
111+
```php
112+
use yii\httpclient\Client;
113+
114+
$client = new Client([
115+
'baseUrl' => 'http://example.com/api/1.0',
116+
'requestConfig' => [
117+
'format' => Client::FORMAT_JSON
118+
],
119+
'responseConfig' => [
120+
'format' => Client::FORMAT_JSON
121+
],
122+
]);
123+
124+
$request = $client->createRequest();
125+
echo $request->format; // zwraca: 'json'
126+
```
127+
128+
> Tip: można nawet określić własne klasy dla obiektów żądania i odpowiedzi, aby uzyskać dodatkowe funkcjonalności -
129+
w tym celu należy użyć klucza 'class' w tablicy konfiguracyjnej.
130+
131+
132+
## Praca z nagłówkami
133+
134+
Można zdefiniować nagłówki żądania za pomocą metod `setHeaders()` i `addHeaders()`.
135+
Metoda `getHeaders()` lub właściwość `headers` służy do pobrania już zdefiniowanych nagłówków w postaci instancji klasy
136+
[[\yii\web\HeaderCollection]]. Przykładowo:
137+
138+
```php
139+
use yii\httpclient\Client;
140+
141+
$client = new Client(['baseUrl' => 'http://example.com/api/1.0']);
142+
$request = $client->createRequest()
143+
->setHeaders(['content-type' => 'application/json'])
144+
->addHeaders(['user-agent' => 'My User Agent']);
145+
146+
$request->getHeaders()->add('accept-language', 'en-US;en');
147+
$request->headers->set('user-agent', 'User agent override');
148+
```
149+
150+
Kiedy obiekt odpowiedzi jest już gotowy, można pobrać wszystkie nagłówki odpowiedzi za pomocą metody `getHeaders()` lub
151+
właściwości `headers`:
152+
153+
```php
154+
$response = $request->send();
155+
echo $response->getHeaders()->get('content-type');
156+
echo $response->headers->get('content-encoding');
157+
```
158+
159+
160+
## Praca z ciasteczkami
161+
162+
Pomimo tego, że ciasteczka są przesyłane wyłącznie w nagłówkach, [[\yii\httpclient\Request]] i [[\yii\httpclient\Request]]
163+
dostarczają oddzielny interfejs dla pracy z nimi, używając [[\yii\web\Cookie]] i [[\yii\web\CookieCollection]].
164+
165+
Można zdefiniować ciasteczka żądania używając metod `setCookies()` lub `addCookies()`.
166+
Metoda `getCookies()` lub właściwość `cookies` służy do pobrania już zdefiniowanych ciasteczek w postaci instancji klasy
167+
[[\yii\web\CookieCollection]]. Przykładowo:
168+
169+
```php
170+
use yii\httpclient\Client;
171+
use yii\web\Cookie;
172+
173+
$client = new Client(['baseUrl' => 'http://example.com/api/1.0']);
174+
$request = $client->createRequest()
175+
->setCookies([
176+
['name' => 'country', 'value' => 'USA'],
177+
new Cookie(['name' => 'language', 'value' => 'en-US']),
178+
])
179+
->addCookies([
180+
['name' => 'view_mode', 'value' => 'full']
181+
]);
182+
183+
$request->cookies->add(['name' => 'display-notification', 'value' => '0']);
184+
```
185+
186+
Kiedy obiekt odpowiedzi jest już gotowy, można pobrać wszystkie ciasteczka odpowiedzi za pomocą metody `getCookies()` lub
187+
właściwości `cookies`:
188+
189+
```php
190+
$response = $request->send();
191+
echo $response->getCookies()->get('country');
192+
echo $response->headers->get('PHPSESSID');
193+
```
194+
195+
Można przekazać ciasteczka pomiędzy obiektem odpowiedzi i żądania po prostu je kopiując.
196+
Przykładowo, musimy edytować profil użytkownika w aplikacji web, dostępnej jedynie po zalogowaniu - konieczne jest zatem
197+
zalogowanie się i następnie użycie nowoutworzonej sesji dla uwierzytelnienia dalszej aktywności:
198+
199+
```php
200+
use yii\httpclient\Client;
201+
202+
$client = new Client(['baseUrl' => 'http://example.com']);
203+
204+
$loginResponse = $client->post('login', [
205+
'username' => 'johndoe',
206+
'password' => 'somepassword',
207+
])->send();
208+
209+
// $loginResponse->cookies->get('PHPSESSID') - przechowuje ID nowej sesji
210+
211+
$client->post('account/profile', ['birthDate' => '10/11/1982'])
212+
->setCookies($loginResponse->cookies) // przekazuje ciasteczka odpowiedzi do żądania
213+
->send();
214+
```

docs/guide-pl/installation.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
Instalacja
2+
==========
3+
4+
## Instalowanie rozszerzenia
5+
6+
W celu zainstalowania rozszerzenia należy użyć Composera. Uruchom komendę
7+
8+
```
9+
composer require --prefer-dist yiisoft/yii2-httpclient "*"
10+
```
11+
12+
lub dodaj
13+
14+
```json
15+
"yiisoft/yii2-httpclient": "*"
16+
```
17+
do sekcji `require` w pliku composer.json.

docs/guide-pl/topics-debug.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
Korzystanie z panelu debugowania klienta HTTP
2+
=============================================
3+
4+
Klient HTTP Yii 2 dostarcza panel debugowania, który można zintegrować z modułem debugowania Yii. Panel pokazuje wykonane
5+
żądania HTTP.
6+
7+
Dodaj następujący kod do konfiguracji swojej aplikacji, aby włączyć panel (jeśli masz już włączony moduł debugowania,
8+
wystarczy dodać konfigurację 'panels'):
9+
10+
```php
11+
// ...
12+
'bootstrap' => ['debug'],
13+
'modules' => [
14+
'debug' => [
15+
'class' => 'yii\\debug\\Module',
16+
'panels' => [
17+
'httpclient' => [
18+
'class' => 'yii\\httpclient\\debug\\HttpClientPanel',
19+
],
20+
],
21+
],
22+
],
23+
// ...
24+
```
25+
26+
Panel pozwala na wysłanie zalogowanego żądania HTTP i sprawdzenie jego odpowiedzi. Można otrzymać odpowiedź w postaci
27+
tekstu lub przekazać ją bezpośrednio do przeglądarki.
28+
29+
> Note: tylko standardowe zalogowane żądania HTTP mogą być wysłane przez panel debugowania - nie jest to możliwe dla
30+
serii żądań. Należy także pamiętać, że treść zalogowanych żądań może być obcięta zgodnie z wartością
31+
[[\yii\httpclient\Client::contentLoggingMaxSize]], zatem wysłanie takich żądań może zakończyć się błędem lub skutkować
32+
niespodziewanymi rezultatami.
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
Wysyłanie serii żądań
2+
=====================
3+
4+
Klient HTTP pozwala na wysłanie wielu żądań jednocześnie za pomocą metody [[\yii\httpclient\Client::batchSend()]]:
5+
6+
```php
7+
use yii\httpclient\Client;
8+
9+
$client = new Client();
10+
11+
$requests = [
12+
$client->get('http://domain.com/keep-alive'),
13+
$client->post('http://domain.com/notify', ['userId' => 12]),
14+
];
15+
$responses = $client->batchSend($requests);
16+
```
17+
18+
Metoda ta pozwala na zwiększenie wydajności w kontekście [przesyłania danych](usage-transports.md).
19+
Spośród wbudowanych metod przesyłania jedynie [[\yii\httpclient\CurlTransport]] jest przystosowany do jej wykorzystania.
20+
Za pomocą powyższej metody możliwe jest wysłanie żądań równolegle, dzięki czemu można zmniejszyć łączny czas pracy
21+
programu.
22+
23+
> Note: nie każda metoda pzesyłania danych pozwala na przetwarzanie żądań wysłanych za pomocą `batchSend()` w specjalny
24+
sposób, który mógłby zapewnić dodatkowe korzyści. Domyślnie są one wysyłane jedno za drugim, bez zwracania błędów lub
25+
wyrzucania wyjątków. Należy upewnić się, czy klient jest skonfigurowany z odpowiednią metodą transportu, aby uzyskać
26+
wzrost wydajności.
27+
28+
Metoda `batchSend()` zwraca tablicę odpowiedzi, której klucze odpowiadają tym użytym w tablicy żądań.
29+
Dzięki temu można przetworzyć odpowiednie żądanie w prosty sposób:
30+
31+
```php
32+
use yii\httpclient\Client;
33+
34+
$client = new Client();
35+
36+
$requests = [
37+
'news' => $client->get('http://domain.com/news'),
38+
'friends' => $client->get('http://domain.com/user/friends', ['userId' => 12]),
39+
'newComment' => $client->post('http://domain.com/user/comments', ['userId' => 12, 'content' => 'Nowy komentarz']),
40+
];
41+
$responses = $client->batchSend($requests);
42+
43+
// rezultat `GET http://domain.com/news` :
44+
if ($responses['news']->isOk) {
45+
echo $responses['news']->content;
46+
}
47+
48+
// rezultat `GET http://domain.com/user/friends` :
49+
if ($responses['friends']->isOk) {
50+
echo $responses['friends']->content;
51+
}
52+
53+
// rezultat `POST http://domain.com/user/comments` :
54+
if ($responses['newComment']->isOk) {
55+
echo "Komentarz został dodany";
56+
}
57+
```

0 commit comments

Comments
 (0)