@@ -112,11 +112,7 @@ This is an HTTP server which responds with `Hello World!` to every request.
112
112
require __DIR__ . '/vendor/autoload.php';
113
113
114
114
$http = new React\Http\HttpServer(function (Psr\Http\Message\ServerRequestInterface $request) {
115
- return new React\Http\Message\Response(
116
- React\Http\Message\Response::STATUS_OK,
117
- array(
118
- 'Content-Type' => 'text/plain'
119
- ),
115
+ return React\Http\Message\Response::plaintext(
120
116
"Hello World!\n"
121
117
);
122
118
});
@@ -738,11 +734,7 @@ object and expects a [response](#server-response) object in return:
738
734
739
735
``` php
740
736
$http = new React\Http\HttpServer(function (Psr\Http\Message\ServerRequestInterface $request) {
741
- return new React\Http\Message\Response(
742
- React\Http\Message\Response::STATUS_OK,
743
- array(
744
- 'Content-Type' => 'text/plain'
745
- ),
737
+ return React\Http\Message\Response::plaintext(
746
738
"Hello World!\n"
747
739
);
748
740
});
@@ -953,14 +945,10 @@ and will be passed to the callback function like this.
953
945
954
946
``` php
955
947
$http = new React\Http\HttpServer(function (Psr\Http\Message\ServerRequestInterface $request) {
956
- $body = "The method of the request is: " . $request->getMethod();
957
- $body .= "The requested path is: " . $request->getUri()->getPath();
948
+ $body = "The method of the request is: " . $request->getMethod() . "\n" ;
949
+ $body .= "The requested path is: " . $request->getUri()->getPath() . "\n" ;
958
950
959
- return new React\Http\Message\Response(
960
- React\Http\Message\Response::STATUS_OK,
961
- array(
962
- 'Content-Type' => 'text/plain'
963
- ),
951
+ return React\Http\Message\Response::plaintext(
964
952
$body
965
953
);
966
954
});
@@ -996,13 +984,9 @@ The following parameters are currently available:
996
984
997
985
``` php
998
986
$http = new React\Http\HttpServer(function (Psr\Http\Message\ServerRequestInterface $request) {
999
- $body = "Your IP is: " . $request->getServerParams()['REMOTE_ADDR'];
987
+ $body = "Your IP is: " . $request->getServerParams()['REMOTE_ADDR'] . "\n" ;
1000
988
1001
- return new React\Http\Message\Response(
1002
- React\Http\Message\Response::STATUS_OK,
1003
- array(
1004
- 'Content-Type' => 'text/plain'
1005
- ),
989
+ return React\Http\Message\Response::plaintext(
1006
990
$body
1007
991
);
1008
992
});
@@ -1030,11 +1014,7 @@ $http = new React\Http\HttpServer(function (Psr\Http\Message\ServerRequestInterf
1030
1014
$body = 'The value of "foo" is: ' . htmlspecialchars($queryParams['foo']);
1031
1015
}
1032
1016
1033
- return new React\Http\Message\Response(
1034
- React\Http\Message\Response::STATUS_OK,
1035
- array(
1036
- 'Content-Type' => 'text/html'
1037
- ),
1017
+ return React\Http\Message\Response::html(
1038
1018
$body
1039
1019
);
1040
1020
});
@@ -1077,9 +1057,7 @@ request headers (commonly used for `POST` requests for HTML form submission data
1077
1057
$http = new React\Http\HttpServer(function (Psr\Http\Message\ServerRequestInterface $request) {
1078
1058
$name = $request->getParsedBody()['name'] ?? 'anonymous';
1079
1059
1080
- return new React\Http\Message\Response(
1081
- React\Http\Message\Response::STATUS_OK,
1082
- array(),
1060
+ return React\Http\Message\Response::plaintext(
1083
1061
"Hello $name!\n"
1084
1062
);
1085
1063
});
@@ -1102,10 +1080,8 @@ $http = new React\Http\HttpServer(function (Psr\Http\Message\ServerRequestInterf
1102
1080
$data = json_decode((string)$request->getBody());
1103
1081
$name = $data->name ?? 'anonymous';
1104
1082
1105
- return new React\Http\Message\Response(
1106
- React\Http\Message\Response::STATUS_OK,
1107
- array('Content-Type' => 'application/json'),
1108
- json_encode(['message' => "Hello $name!"])
1083
+ return React\Http\Message\Response::json(
1084
+ ['message' => "Hello $name!"]
1109
1085
);
1110
1086
});
1111
1087
```
@@ -1125,9 +1101,7 @@ $http = new React\Http\HttpServer(function (Psr\Http\Message\ServerRequestInterf
1125
1101
$files = $request->getUploadedFiles();
1126
1102
$name = isset($files['avatar']) ? $files['avatar']->getClientFilename() : 'nothing';
1127
1103
1128
- return new React\Http\Message\Response(
1129
- React\Http\Message\Response::STATUS_OK,
1130
- array(),
1104
+ return React\Http\Message\Response::plaintext(
1131
1105
"Uploaded $name\n"
1132
1106
);
1133
1107
});
@@ -1208,24 +1182,16 @@ $http = new React\Http\HttpServer(
1208
1182
});
1209
1183
1210
1184
$body->on('end', function () use ($resolve, & $bytes){
1211
- $resolve(new React\Http\Message\Response(
1212
- React\Http\Message\Response::STATUS_OK,
1213
- array(
1214
- 'Content-Type' => 'text/plain'
1215
- ),
1185
+ $resolve(React\Http\Message\Response::plaintext(
1216
1186
"Received $bytes bytes\n"
1217
1187
));
1218
1188
});
1219
1189
1220
1190
// an error occures e.g. on invalid chunked encoded data or an unexpected 'end' event
1221
1191
$body->on('error', function (Exception $e) use ($resolve, & $bytes) {
1222
- $resolve(new React\Http\Message\Response(
1223
- React\Http\Message\Response::STATUS_BAD_REQUEST,
1224
- array(
1225
- 'Content-Type' => 'text/plain'
1226
- ),
1192
+ $resolve(React\Http\Message\Response::plaintext(
1227
1193
"Encountered error after $bytes bytes: {$e->getMessage()}\n"
1228
- ));
1194
+ )->withStatus(React\Http\Message\Response::STATUS_BAD_REQUEST) );
1229
1195
});
1230
1196
});
1231
1197
}
@@ -1272,23 +1238,15 @@ $http = new React\Http\HttpServer(
1272
1238
function (Psr\Http\Message\ServerRequestInterface $request) {
1273
1239
$size = $request->getBody()->getSize();
1274
1240
if ($size === null) {
1275
- $body = 'The request does not contain an explicit length.';
1276
- $body .= 'This example does not accept chunked transfer encoding.';
1277
-
1278
- return new React\Http\Message\Response(
1279
- React\Http\Message\Response::STATUS_LENGTH_REQUIRED,
1280
- array(
1281
- 'Content-Type' => 'text/plain'
1282
- ),
1241
+ $body = "The request does not contain an explicit length. ";
1242
+ $body .= "This example does not accept chunked transfer encoding.\n";
1243
+
1244
+ return React\Http\Message\Response::plaintext(
1283
1245
$body
1284
- );
1246
+ )->withStatus(React\Http\Message\Response::STATUS_LENGTH_REQUIRED) ;
1285
1247
}
1286
1248
1287
- return new React\Http\Message\Response(
1288
- React\Http\Message\Response::STATUS_OK,
1289
- array(
1290
- 'Content-Type' => 'text/plain'
1291
- ),
1249
+ return React\Http\Message\Response::plaintext(
1292
1250
"Request body size: " . $size . " bytes\n"
1293
1251
);
1294
1252
}
@@ -1344,25 +1302,16 @@ $http = new React\Http\HttpServer(function (Psr\Http\Message\ServerRequestInterf
1344
1302
$key = 'react\php';
1345
1303
1346
1304
if (isset($request->getCookieParams()[$key])) {
1347
- $body = "Your cookie value is: " . $request->getCookieParams()[$key];
1305
+ $body = "Your cookie value is: " . $request->getCookieParams()[$key] . "\n" ;
1348
1306
1349
- return new React\Http\Message\Response(
1350
- React\Http\Message\Response::STATUS_OK,
1351
- array(
1352
- 'Content-Type' => 'text/plain'
1353
- ),
1307
+ return React\Http\Message\Response::plaintext(
1354
1308
$body
1355
1309
);
1356
1310
}
1357
1311
1358
- return new React\Http\Message\Response(
1359
- React\Http\Message\Response::STATUS_OK,
1360
- array(
1361
- 'Content-Type' => 'text/plain',
1362
- 'Set-Cookie' => urlencode($key) . '=' . urlencode('test;more')
1363
- ),
1364
- "Your cookie has been set."
1365
- );
1312
+ return React\Http\Message\Response::plaintext(
1313
+ "Your cookie has been set.\n"
1314
+ )->withHeader('Set-Cookie', urlencode($key) . '=' . urlencode('test;more'));
1366
1315
});
1367
1316
```
1368
1317
@@ -1413,11 +1362,7 @@ In its most simple form, you can use it like this:
1413
1362
1414
1363
``` php
1415
1364
$http = new React\Http\HttpServer(function (Psr\Http\Message\ServerRequestInterface $request) {
1416
- return new React\Http\Message\Response(
1417
- React\Http\Message\Response::STATUS_OK,
1418
- array(
1419
- 'Content-Type' => 'text/plain'
1420
- ),
1365
+ return React\Http\Message\Response::plaintext(
1421
1366
"Hello World!\n"
1422
1367
);
1423
1368
});
@@ -1441,18 +1386,17 @@ This example shows how such a long-term action could look like:
1441
1386
1442
1387
``` php
1443
1388
$http = new React\Http\HttpServer(function (Psr\Http\Message\ServerRequestInterface $request) {
1444
- return new Promise(function ($resolve, $reject) {
1389
+ $promise = new Promise(function ($resolve, $reject) {
1445
1390
Loop::addTimer(1.5, function() use ($resolve) {
1446
- $response = new React\Http\Message\Response(
1447
- React\Http\Message\Response::STATUS_OK,
1448
- array(
1449
- 'Content-Type' => 'text/plain'
1450
- ),
1451
- "Hello world"
1452
- );
1453
- $resolve($response);
1391
+ $resolve();
1454
1392
});
1455
1393
});
1394
+
1395
+ return $promise->then(function () {
1396
+ return React\Http\Message\Response::plaintext(
1397
+ "Hello World!"
1398
+ );
1399
+ });
1456
1400
});
1457
1401
```
1458
1402
@@ -1571,11 +1515,7 @@ a `string` response body like this:
1571
1515
1572
1516
``` php
1573
1517
$http = new React\Http\HttpServer(function (Psr\Http\Message\ServerRequestInterface $request) {
1574
- return new React\Http\Message\Response(
1575
- React\Http\Message\Response::STATUS_OK,
1576
- array(
1577
- 'Content-Type' => 'text/plain'
1578
- ),
1518
+ return React\Http\Message\Response::plaintext(
1579
1519
"Hello World!\n"
1580
1520
);
1581
1521
});
@@ -1845,11 +1785,9 @@ $http = new React\Http\HttpServer(
1845
1785
$resolve($next($request));
1846
1786
});
1847
1787
return $promise->then(null, function (Exception $e) {
1848
- return new React\Http\Message\Response(
1849
- React\Http\Message\Response::STATUS_INTERNAL_SERVER_ERROR,
1850
- array(),
1851
- 'Internal error: ' . $e->getMessage()
1852
- );
1788
+ return React\Http\Message\Response::plaintext(
1789
+ 'Internal error: ' . $e->getMessage() . "\n"
1790
+ )->withStatus(React\Http\Message\Response::STATUS_INTERNAL_SERVER_ERROR);
1853
1791
});
1854
1792
},
1855
1793
function (Psr\Http\Message\ServerRequestInterface $request) {
0 commit comments