@innet/server 2.0.0-alpha.12 → 2.0.0-alpha.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +457 -367
- package/handler/handler.d.ts +3 -3
- package/handler/handler.es6.js +2 -2
- package/handler/handler.js +2 -2
- package/hooks/index.d.ts +2 -1
- package/hooks/index.es6.js +2 -1
- package/hooks/index.js +2 -1
- package/hooks/useAction/useAction.es6.js +1 -1
- package/hooks/useAction/useAction.js +1 -1
- package/hooks/useApi/useApi.d.ts +1 -3
- package/hooks/useEndpoint/useEndpoint.es6.js +3 -1
- package/hooks/useEndpoint/useEndpoint.js +3 -1
- package/hooks/useRequest/index.es6.js +1 -1
- package/hooks/useRequest/index.js +0 -1
- package/hooks/useRequest/useRequest.d.ts +1 -4
- package/hooks/useRequest/useRequest.es6.js +4 -4
- package/hooks/useRequest/useRequest.js +3 -4
- package/hooks/useResponse/index.es6.js +1 -1
- package/hooks/useResponse/index.js +0 -1
- package/hooks/useResponse/useResponse.d.ts +1 -4
- package/hooks/useResponse/useResponse.es6.js +4 -4
- package/hooks/useResponse/useResponse.js +3 -4
- package/hooks/useServer/useServer.d.ts +1 -0
- package/hooks/useServer/useServer.es6.js +3 -1
- package/hooks/useServer/useServer.js +3 -1
- package/hooks/useServerPlugin/index.d.ts +1 -0
- package/hooks/useServerPlugin/index.es6.js +1 -0
- package/hooks/useServerPlugin/index.js +9 -0
- package/hooks/useServerPlugin/useServerPlugin.d.ts +2 -0
- package/hooks/useServerPlugin/useServerPlugin.es6.js +13 -0
- package/hooks/useServerPlugin/useServerPlugin.js +17 -0
- package/hooks/useServerPlugins/index.d.ts +1 -0
- package/hooks/useServerPlugins/index.es6.js +1 -0
- package/hooks/useServerPlugins/index.js +10 -0
- package/hooks/useServerPlugins/useServerPlugins.d.ts +4 -0
- package/hooks/useServerPlugins/useServerPlugins.es6.js +14 -0
- package/hooks/useServerPlugins/useServerPlugins.js +19 -0
- package/index.es6.js +5 -4
- package/index.js +7 -6
- package/package.json +1 -1
- package/plugins/main/api/api.d.ts +2 -0
- package/plugins/main/api/api.es6.js +44 -52
- package/plugins/main/api/api.js +43 -51
- package/plugins/main/endpoint/endpoint.es6.js +4 -1
- package/plugins/main/endpoint/endpoint.js +4 -1
- package/plugins/main/index.d.ts +1 -1
- package/plugins/main/index.es6.js +1 -1
- package/plugins/main/index.js +1 -1
- package/plugins/main/preset/index.d.ts +1 -0
- package/plugins/main/preset/index.es6.js +1 -0
- package/plugins/main/{fallback → preset}/index.js +2 -2
- package/plugins/main/preset/preset.d.ts +3 -0
- package/plugins/main/preset/preset.es6.js +13 -0
- package/plugins/main/preset/preset.js +21 -0
- package/plugins/main/request/request.es6.js +2 -13
- package/plugins/main/request/request.js +2 -13
- package/plugins/main/response/response.d.ts +1 -0
- package/plugins/main/response/response.es6.js +7 -7
- package/plugins/main/response/response.js +7 -7
- package/plugins/main/server/server.d.ts +3 -3
- package/plugins/main/server/server.es6.js +28 -6
- package/plugins/main/server/server.js +28 -6
- package/plugins/request/success/success.d.ts +1 -1
- package/plugins/request/success/success.es6.js +4 -4
- package/plugins/request/success/success.js +4 -4
- package/plugins/utils/blacklist/blacklist.es6.js +4 -3
- package/plugins/utils/blacklist/blacklist.js +4 -3
- package/plugins/utils/dts/dts.d.ts +2 -1
- package/plugins/utils/dts/dts.es6.js +2 -2
- package/plugins/utils/dts/dts.js +2 -2
- package/plugins/utils/protection/protection.es6.js +4 -2
- package/plugins/utils/protection/protection.js +4 -2
- package/plugins/utils/swagger/swagger.es6.js +5 -3
- package/plugins/utils/swagger/swagger.js +5 -3
- package/plugins/utils/whitelist/whitelist.es6.js +4 -2
- package/plugins/utils/whitelist/whitelist.js +4 -2
- package/types.d.ts +2 -9
- package/utils/action/Action.es6.js +12 -10
- package/utils/action/Action.js +12 -10
- package/utils/generateTypes/generateTypes.d.ts +2 -2
- package/utils/generateTypes/generateTypes.es6.js +40 -15
- package/utils/generateTypes/generateTypes.js +40 -15
- package/utils/getEndpoint/getEndpoint.es6.js +2 -2
- package/utils/getEndpoint/getEndpoint.js +2 -2
- package/hooks/useRequestPlugin/index.d.ts +0 -1
- package/hooks/useRequestPlugin/index.es6.js +0 -1
- package/hooks/useRequestPlugin/index.js +0 -9
- package/hooks/useRequestPlugin/useRequestPlugin.d.ts +0 -2
- package/hooks/useRequestPlugin/useRequestPlugin.es6.js +0 -13
- package/hooks/useRequestPlugin/useRequestPlugin.js +0 -17
- package/plugins/main/fallback/fallback.d.ts +0 -4
- package/plugins/main/fallback/fallback.es6.js +0 -19
- package/plugins/main/fallback/fallback.js +0 -23
- package/plugins/main/fallback/index.d.ts +0 -1
- package/plugins/main/fallback/index.es6.js +0 -1
package/README.md
CHANGED
|
@@ -46,7 +46,7 @@ Customize
|
|
|
46
46
|
|
|
47
47
|
[← back](#index)
|
|
48
48
|
|
|
49
|
-
The simplest way to start working with `@innet/server`, it is
|
|
49
|
+
The simplest way to start working with `@innet/server`, it is [innetjs](https://www.npmjs.com/package/innetjs) usage.
|
|
50
50
|
|
|
51
51
|
```shell
|
|
52
52
|
npx innetjs init my-app -t api
|
|
@@ -77,6 +77,28 @@ innet(app, server)
|
|
|
77
77
|
|
|
78
78
|
Here is a **Hello World** example:
|
|
79
79
|
|
|
80
|
+
*src/app.tsx*
|
|
81
|
+
```typescript jsx
|
|
82
|
+
export default (
|
|
83
|
+
<server>
|
|
84
|
+
<request>
|
|
85
|
+
<success>
|
|
86
|
+
Hello World!
|
|
87
|
+
</success>
|
|
88
|
+
</request>
|
|
89
|
+
</server>
|
|
90
|
+
)
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
*Use `npm start` to run this server.*
|
|
94
|
+
|
|
95
|
+
Open http://localhost:80
|
|
96
|
+
You will see the `Hello Word!` string.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
Here is the simplest [api](#api) example:
|
|
101
|
+
|
|
80
102
|
*src/app.tsx*
|
|
81
103
|
```typescript jsx
|
|
82
104
|
export default (
|
|
@@ -107,7 +129,9 @@ You will see a base Open API JSON structure.
|
|
|
107
129
|
[← back](#index)
|
|
108
130
|
|
|
109
131
|
[\<server>](#server)
|
|
110
|
-
[\<api>](#api)
|
|
132
|
+
[\<api>](#api)
|
|
133
|
+
[\<request>](#request)
|
|
134
|
+
[\<preset>](#preset)
|
|
111
135
|
|
|
112
136
|
---
|
|
113
137
|
|
|
@@ -206,6 +230,19 @@ export default (
|
|
|
206
230
|
)
|
|
207
231
|
```
|
|
208
232
|
|
|
233
|
+
#### onClose
|
|
234
|
+
|
|
235
|
+
Use `onClose` to handle server close action.
|
|
236
|
+
|
|
237
|
+
*src/app.tsx*
|
|
238
|
+
```typescript jsx
|
|
239
|
+
export default (
|
|
240
|
+
<server
|
|
241
|
+
onClose={() => console.log('Close')}
|
|
242
|
+
/>
|
|
243
|
+
)
|
|
244
|
+
```
|
|
245
|
+
|
|
209
246
|
### \<api>
|
|
210
247
|
|
|
211
248
|
[← back](#main)
|
|
@@ -309,6 +346,162 @@ export default (
|
|
|
309
346
|
)
|
|
310
347
|
```
|
|
311
348
|
|
|
349
|
+
#### include
|
|
350
|
+
|
|
351
|
+
A regular expression scopes the API.
|
|
352
|
+
|
|
353
|
+
*src/app.tsx*
|
|
354
|
+
```typescript jsx
|
|
355
|
+
export default (
|
|
356
|
+
<server>
|
|
357
|
+
<api
|
|
358
|
+
include={/^\/(api|openapi)/}
|
|
359
|
+
/>
|
|
360
|
+
</server>
|
|
361
|
+
)
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
#### exclude
|
|
365
|
+
|
|
366
|
+
A regular expression does not scope the API.
|
|
367
|
+
|
|
368
|
+
*src/app.tsx*
|
|
369
|
+
```typescript jsx
|
|
370
|
+
export default (
|
|
371
|
+
<server>
|
|
372
|
+
<api prefix='/api' />
|
|
373
|
+
<api prefix='/openapi' />
|
|
374
|
+
<api exclude={/^\/(api|openapi)/} />
|
|
375
|
+
</server>
|
|
376
|
+
)
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
### \<request>
|
|
380
|
+
|
|
381
|
+
[← back](#main)
|
|
382
|
+
|
|
383
|
+
This element MUST be placed in [\<server>](#server) element.
|
|
384
|
+
It defines run-time call handler for parent element.
|
|
385
|
+
|
|
386
|
+
*src/app.tsx*
|
|
387
|
+
```typescript jsx
|
|
388
|
+
export default (
|
|
389
|
+
<server>
|
|
390
|
+
<request>
|
|
391
|
+
<error status={404} />
|
|
392
|
+
</request>
|
|
393
|
+
</server>
|
|
394
|
+
)
|
|
395
|
+
```
|
|
396
|
+
*Any request returns 404*
|
|
397
|
+
|
|
398
|
+
Place [\<request>](#request) in [\<api>](#api) to handle any unknown request in the [\<api>](#api).
|
|
399
|
+
|
|
400
|
+
*src/app.tsx*
|
|
401
|
+
```typescript jsx
|
|
402
|
+
export default (
|
|
403
|
+
<server>
|
|
404
|
+
<api>
|
|
405
|
+
<request>
|
|
406
|
+
<error status={404} />
|
|
407
|
+
</request>
|
|
408
|
+
</api>
|
|
409
|
+
</server>
|
|
410
|
+
)
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
Place [\<request>](#request) in [\<endpoint>](#endpoint) to handle the [\<endpoint>](#endpoint) request.
|
|
414
|
+
|
|
415
|
+
*src/app.tsx*
|
|
416
|
+
```typescript jsx
|
|
417
|
+
export default (
|
|
418
|
+
<server>
|
|
419
|
+
<api>
|
|
420
|
+
<endpoint method='get' path='/my-endpoint'>
|
|
421
|
+
<request>
|
|
422
|
+
<success>
|
|
423
|
+
My Endpoint
|
|
424
|
+
</success>
|
|
425
|
+
</request>
|
|
426
|
+
</endpoint>
|
|
427
|
+
</api>
|
|
428
|
+
<request>
|
|
429
|
+
<success>
|
|
430
|
+
Any other request
|
|
431
|
+
</success>
|
|
432
|
+
</request>
|
|
433
|
+
</server>
|
|
434
|
+
)
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
You can place a component inside [\<request>](#request).
|
|
438
|
+
The component will run when the request will be triggered.
|
|
439
|
+
|
|
440
|
+
*src/app.tsx*
|
|
441
|
+
```typescript jsx
|
|
442
|
+
import { GetPartners } from './GetPartners'
|
|
443
|
+
|
|
444
|
+
export default (
|
|
445
|
+
<server>
|
|
446
|
+
<api>
|
|
447
|
+
<endpoint method='get' path='/partners'>
|
|
448
|
+
<request>
|
|
449
|
+
<GetPartners />
|
|
450
|
+
</request>
|
|
451
|
+
</endpoint>
|
|
452
|
+
</api>
|
|
453
|
+
</server>
|
|
454
|
+
)
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
*src/GetPartners.tsx*
|
|
458
|
+
```typescript jsx
|
|
459
|
+
export const GetPartners = () => (
|
|
460
|
+
<success>
|
|
461
|
+
{{partners: []}}
|
|
462
|
+
</success>
|
|
463
|
+
)
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
### \<preset>
|
|
467
|
+
|
|
468
|
+
[← back](#main)
|
|
469
|
+
|
|
470
|
+
`<preset>` element MUST be placed in `<server>` element.
|
|
471
|
+
This element adds handling of each request.
|
|
472
|
+
|
|
473
|
+
*src/app.tsx*
|
|
474
|
+
```typescript jsx
|
|
475
|
+
export default (
|
|
476
|
+
<server>
|
|
477
|
+
<preset>
|
|
478
|
+
<header
|
|
479
|
+
key='Test'
|
|
480
|
+
value='Ok'
|
|
481
|
+
/>
|
|
482
|
+
</preset>
|
|
483
|
+
</server>
|
|
484
|
+
)
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
Place the element inside [\<api>](#api) to preset it on the api requests scope.
|
|
488
|
+
|
|
489
|
+
*src/app.tsx*
|
|
490
|
+
```typescript jsx
|
|
491
|
+
export default (
|
|
492
|
+
<server>
|
|
493
|
+
<api prefix='/api'>
|
|
494
|
+
<preset>
|
|
495
|
+
<header
|
|
496
|
+
key='Cache-Control'
|
|
497
|
+
value='no-cache, no-store, must-revalidate'
|
|
498
|
+
/>
|
|
499
|
+
</preset>
|
|
500
|
+
</api>
|
|
501
|
+
</server>
|
|
502
|
+
)
|
|
503
|
+
```
|
|
504
|
+
|
|
312
505
|
## Utils
|
|
313
506
|
|
|
314
507
|
This section contains elements of utils.
|
|
@@ -404,16 +597,12 @@ export default (
|
|
|
404
597
|
Use `<dts>` element to add types generation.
|
|
405
598
|
`<dts>` element MUST be placed in `<api>` element.
|
|
406
599
|
|
|
407
|
-
`<dts>` has a required prop of `path`. This is a path of api TypeScript types file, `<dts>` generates it.
|
|
408
|
-
|
|
409
600
|
*src/app.tsx*
|
|
410
601
|
```typescript jsx
|
|
411
602
|
export default (
|
|
412
603
|
<server>
|
|
413
604
|
<api>
|
|
414
|
-
<
|
|
415
|
-
<dts path='src/api.d.ts' />
|
|
416
|
-
</dev>
|
|
605
|
+
<dts />
|
|
417
606
|
</api>
|
|
418
607
|
</server>
|
|
419
608
|
)
|
|
@@ -442,6 +631,37 @@ export function DeleteTodo () {
|
|
|
442
631
|
}
|
|
443
632
|
```
|
|
444
633
|
|
|
634
|
+
#### path
|
|
635
|
+
|
|
636
|
+
This is a path of api TypeScript types file, `<dts>` generates it.
|
|
637
|
+
`'src/api.d.ts'` by default.
|
|
638
|
+
|
|
639
|
+
*src/app.tsx*
|
|
640
|
+
```typescript jsx
|
|
641
|
+
export default (
|
|
642
|
+
<server>
|
|
643
|
+
<api>
|
|
644
|
+
<dts path='src/types.d.ts' />
|
|
645
|
+
</api>
|
|
646
|
+
</server>
|
|
647
|
+
)
|
|
648
|
+
```
|
|
649
|
+
|
|
650
|
+
#### namespace
|
|
651
|
+
|
|
652
|
+
This prop changes namespace for generated types. `'Api'` by default.
|
|
653
|
+
|
|
654
|
+
*src/app.tsx*
|
|
655
|
+
```typescript jsx
|
|
656
|
+
export default (
|
|
657
|
+
<server>
|
|
658
|
+
<api>
|
|
659
|
+
<dts namespace='API' />
|
|
660
|
+
</api>
|
|
661
|
+
</server>
|
|
662
|
+
)
|
|
663
|
+
```
|
|
664
|
+
|
|
445
665
|
### \<blacklist>
|
|
446
666
|
|
|
447
667
|
This element MUST be placed in `<api>` element.
|
|
@@ -1375,6 +1595,26 @@ return (
|
|
|
1375
1595
|
)
|
|
1376
1596
|
```
|
|
1377
1597
|
|
|
1598
|
+
#### type
|
|
1599
|
+
A media type of the `<response>`.
|
|
1600
|
+
|
|
1601
|
+
By default, `type` equals `'application/json'`.
|
|
1602
|
+
|
|
1603
|
+
*src/app.tsx*
|
|
1604
|
+
```typescript jsx
|
|
1605
|
+
return (
|
|
1606
|
+
<server>
|
|
1607
|
+
<api>
|
|
1608
|
+
<endpoint method='get' path='/hello'>
|
|
1609
|
+
<response type='text/html'>
|
|
1610
|
+
Hello World!
|
|
1611
|
+
</response>
|
|
1612
|
+
</endpoint>
|
|
1613
|
+
</api>
|
|
1614
|
+
</server>
|
|
1615
|
+
)
|
|
1616
|
+
```
|
|
1617
|
+
|
|
1378
1618
|
## Primitive Data
|
|
1379
1619
|
|
|
1380
1620
|
[← back](#index)
|
|
@@ -2797,12 +3037,7 @@ Next elements relate to run-time action.
|
|
|
2797
3037
|
This action calls on user request.
|
|
2798
3038
|
|
|
2799
3039
|
[← back](#index)
|
|
2800
|
-
|
|
2801
|
-
Parent
|
|
2802
|
-
[\<fallback>](#fallback)
|
|
2803
|
-
[\<request>](#request)
|
|
2804
|
-
|
|
2805
|
-
Children
|
|
3040
|
+
|
|
2806
3041
|
[\<success>](#success)
|
|
2807
3042
|
[\<error>](#error)
|
|
2808
3043
|
[\<proxy>](#proxy)
|
|
@@ -2814,94 +3049,6 @@ Children
|
|
|
2814
3049
|
|
|
2815
3050
|
---
|
|
2816
3051
|
|
|
2817
|
-
### \<fallback>
|
|
2818
|
-
|
|
2819
|
-
[← back](#run-time)
|
|
2820
|
-
|
|
2821
|
-
By default, `<api>` server returns 404 with empty body.
|
|
2822
|
-
[\<fallback>](#fallback) element defines default server response.
|
|
2823
|
-
This element MUST be placed in `<api>`.
|
|
2824
|
-
You MUST use one [\<fallback>](#fallback) per `<api>`.
|
|
2825
|
-
Can contain elements available inside [\<request>](#request).
|
|
2826
|
-
|
|
2827
|
-
*src/app.tsx*
|
|
2828
|
-
```typescript jsx
|
|
2829
|
-
export default (
|
|
2830
|
-
<server>
|
|
2831
|
-
<api>
|
|
2832
|
-
<fallback>
|
|
2833
|
-
<error
|
|
2834
|
-
code='unknownEndpoint'
|
|
2835
|
-
/>
|
|
2836
|
-
</fallback>
|
|
2837
|
-
</api>
|
|
2838
|
-
</server>
|
|
2839
|
-
)
|
|
2840
|
-
```
|
|
2841
|
-
|
|
2842
|
-
If you open the application on any URL except for `/`, you can see the next response.
|
|
2843
|
-
|
|
2844
|
-
```json
|
|
2845
|
-
{
|
|
2846
|
-
"error": "unknownEndpoint"
|
|
2847
|
-
}
|
|
2848
|
-
```
|
|
2849
|
-
|
|
2850
|
-
The next elements are placed in [\<request>](#request) or [\<fallback>](#fallback)
|
|
2851
|
-
|
|
2852
|
-
### \<request>
|
|
2853
|
-
|
|
2854
|
-
[← back](#run-time)
|
|
2855
|
-
|
|
2856
|
-
This element MUST be placed in `<endpoint>` element.
|
|
2857
|
-
It defines run-time call handler for the endpoint.
|
|
2858
|
-
|
|
2859
|
-
*src/app.tsx*
|
|
2860
|
-
```typescript jsx
|
|
2861
|
-
export default (
|
|
2862
|
-
<server>
|
|
2863
|
-
<api>
|
|
2864
|
-
<endpoint method='get' path='/partners'>
|
|
2865
|
-
<request>
|
|
2866
|
-
<success>
|
|
2867
|
-
{{partners: []}}
|
|
2868
|
-
</success>
|
|
2869
|
-
</request>
|
|
2870
|
-
</endpoint>
|
|
2871
|
-
</api>
|
|
2872
|
-
</server>
|
|
2873
|
-
)
|
|
2874
|
-
```
|
|
2875
|
-
|
|
2876
|
-
You can place a component inside it.
|
|
2877
|
-
The component will run when the endpoint will be triggered.
|
|
2878
|
-
|
|
2879
|
-
*src/app.tsx*
|
|
2880
|
-
```typescript jsx
|
|
2881
|
-
import { GetPartners } from './GetPartners'
|
|
2882
|
-
|
|
2883
|
-
export default (
|
|
2884
|
-
<server>
|
|
2885
|
-
<api>
|
|
2886
|
-
<endpoint method='get' path='/partners'>
|
|
2887
|
-
<request>
|
|
2888
|
-
<GetPartners />
|
|
2889
|
-
</request>
|
|
2890
|
-
</endpoint>
|
|
2891
|
-
</api>
|
|
2892
|
-
</server>
|
|
2893
|
-
)
|
|
2894
|
-
```
|
|
2895
|
-
|
|
2896
|
-
*src/GetPartners.tsx*
|
|
2897
|
-
```typescript jsx
|
|
2898
|
-
export const GetPartners = () => (
|
|
2899
|
-
<success>
|
|
2900
|
-
{{partners: []}}
|
|
2901
|
-
</success>
|
|
2902
|
-
)
|
|
2903
|
-
```
|
|
2904
|
-
|
|
2905
3052
|
### \<success>
|
|
2906
3053
|
|
|
2907
3054
|
[← back](#run-time)
|
|
@@ -2912,11 +3059,9 @@ This is a base element to return a success data.
|
|
|
2912
3059
|
```typescript jsx
|
|
2913
3060
|
export default (
|
|
2914
3061
|
<server>
|
|
2915
|
-
<
|
|
2916
|
-
<
|
|
2917
|
-
|
|
2918
|
-
</fallback>
|
|
2919
|
-
</api>
|
|
3062
|
+
<response>
|
|
3063
|
+
<success />
|
|
3064
|
+
</response>
|
|
2920
3065
|
</server>
|
|
2921
3066
|
)
|
|
2922
3067
|
```
|
|
@@ -2931,13 +3076,11 @@ const data = {...}
|
|
|
2931
3076
|
|
|
2932
3077
|
export default (
|
|
2933
3078
|
<server>
|
|
2934
|
-
<
|
|
2935
|
-
<
|
|
2936
|
-
|
|
2937
|
-
|
|
2938
|
-
|
|
2939
|
-
</fallback>
|
|
2940
|
-
</api>
|
|
3079
|
+
<response>
|
|
3080
|
+
<success>
|
|
3081
|
+
{data}
|
|
3082
|
+
</success>
|
|
3083
|
+
</response>
|
|
2941
3084
|
</server>
|
|
2942
3085
|
)
|
|
2943
3086
|
```
|
|
@@ -2954,13 +3097,11 @@ const data = {...}
|
|
|
2954
3097
|
|
|
2955
3098
|
export default (
|
|
2956
3099
|
<server>
|
|
2957
|
-
<
|
|
2958
|
-
<
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
2962
|
-
</fallback>
|
|
2963
|
-
</api>
|
|
3100
|
+
<response>
|
|
3101
|
+
<success status='created'>
|
|
3102
|
+
{data}
|
|
3103
|
+
</success>
|
|
3104
|
+
</response>
|
|
2964
3105
|
</server>
|
|
2965
3106
|
)
|
|
2966
3107
|
```
|
|
@@ -2975,13 +3116,11 @@ const data = {...}
|
|
|
2975
3116
|
|
|
2976
3117
|
export default (
|
|
2977
3118
|
<server>
|
|
2978
|
-
<
|
|
2979
|
-
<
|
|
2980
|
-
|
|
2981
|
-
|
|
2982
|
-
|
|
2983
|
-
</fallback>
|
|
2984
|
-
</api>
|
|
3119
|
+
<response>
|
|
3120
|
+
<success status={201}>
|
|
3121
|
+
{data}
|
|
3122
|
+
</success>
|
|
3123
|
+
</response>
|
|
2985
3124
|
</server>
|
|
2986
3125
|
)
|
|
2987
3126
|
```
|
|
@@ -2995,13 +3134,11 @@ By default, it checks children element to define the prop.
|
|
|
2995
3134
|
```typescript jsx
|
|
2996
3135
|
export default (
|
|
2997
3136
|
<server>
|
|
2998
|
-
<
|
|
2999
|
-
<
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
</fallback>
|
|
3004
|
-
</api>
|
|
3137
|
+
<response>
|
|
3138
|
+
<success contentType='text/html'>
|
|
3139
|
+
Hello World!
|
|
3140
|
+
</success>
|
|
3141
|
+
</response>
|
|
3005
3142
|
</server>
|
|
3006
3143
|
)
|
|
3007
3144
|
```
|
|
@@ -3011,17 +3148,15 @@ export default (
|
|
|
3011
3148
|
[← back](#run-time)
|
|
3012
3149
|
|
|
3013
3150
|
Returns an error.
|
|
3014
|
-
This element MUST be placed in [\<request>](#request) or [\<
|
|
3151
|
+
This element MUST be placed in [\<request>](#request) or [\<response>](#response).
|
|
3015
3152
|
|
|
3016
3153
|
*src/app.tsx*
|
|
3017
3154
|
```typescript jsx
|
|
3018
3155
|
export default (
|
|
3019
3156
|
<server>
|
|
3020
|
-
<
|
|
3021
|
-
<
|
|
3022
|
-
|
|
3023
|
-
</fallback>
|
|
3024
|
-
</api>
|
|
3157
|
+
<response>
|
|
3158
|
+
<error />
|
|
3159
|
+
</response>
|
|
3025
3160
|
</server>
|
|
3026
3161
|
)
|
|
3027
3162
|
```
|
|
@@ -3034,13 +3169,11 @@ const data = {...}
|
|
|
3034
3169
|
|
|
3035
3170
|
export default (
|
|
3036
3171
|
<server>
|
|
3037
|
-
<
|
|
3038
|
-
<
|
|
3039
|
-
|
|
3040
|
-
|
|
3041
|
-
|
|
3042
|
-
</fallback>
|
|
3043
|
-
</api>
|
|
3172
|
+
<response>
|
|
3173
|
+
<error>
|
|
3174
|
+
{data}
|
|
3175
|
+
</error>
|
|
3176
|
+
</response>
|
|
3044
3177
|
</server>
|
|
3045
3178
|
)
|
|
3046
3179
|
```
|
|
@@ -3056,13 +3189,11 @@ const data = {
|
|
|
3056
3189
|
|
|
3057
3190
|
export default (
|
|
3058
3191
|
<server>
|
|
3059
|
-
<
|
|
3060
|
-
<
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3064
|
-
</fallback>
|
|
3065
|
-
</api>
|
|
3192
|
+
<response>
|
|
3193
|
+
<error status='notFound'>
|
|
3194
|
+
{data}
|
|
3195
|
+
</error>
|
|
3196
|
+
</response>
|
|
3066
3197
|
</server>
|
|
3067
3198
|
)
|
|
3068
3199
|
```
|
|
@@ -3077,13 +3208,11 @@ const data = {
|
|
|
3077
3208
|
|
|
3078
3209
|
export default (
|
|
3079
3210
|
<server>
|
|
3080
|
-
<
|
|
3081
|
-
<
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
</fallback>
|
|
3086
|
-
</api>
|
|
3211
|
+
<response>
|
|
3212
|
+
<error status={404}>
|
|
3213
|
+
{data}
|
|
3214
|
+
</error>
|
|
3215
|
+
</response>
|
|
3087
3216
|
</server>
|
|
3088
3217
|
)
|
|
3089
3218
|
```
|
|
@@ -3111,15 +3240,13 @@ const data = {
|
|
|
3111
3240
|
|
|
3112
3241
|
export default (
|
|
3113
3242
|
<server>
|
|
3114
|
-
<
|
|
3115
|
-
<
|
|
3116
|
-
|
|
3117
|
-
|
|
3118
|
-
|
|
3119
|
-
|
|
3120
|
-
|
|
3121
|
-
</fallback>
|
|
3122
|
-
</api>
|
|
3243
|
+
<response>
|
|
3244
|
+
<error
|
|
3245
|
+
code='noUser'
|
|
3246
|
+
status='notFound'>
|
|
3247
|
+
{data}
|
|
3248
|
+
</error>
|
|
3249
|
+
</response>
|
|
3123
3250
|
</server>
|
|
3124
3251
|
)
|
|
3125
3252
|
```
|
|
@@ -3147,7 +3274,7 @@ There are some default errors:
|
|
|
3147
3274
|
|
|
3148
3275
|
[← back](#run-time)
|
|
3149
3276
|
|
|
3150
|
-
MUST be placed in [\<request>](#request) or [\<
|
|
3277
|
+
MUST be placed in [\<request>](#request) or [\<response>](#response).
|
|
3151
3278
|
|
|
3152
3279
|
You can easy proxy endpoints to another server/service.
|
|
3153
3280
|
|
|
@@ -3163,10 +3290,10 @@ export default (
|
|
|
3163
3290
|
<proxy to='https://...' />
|
|
3164
3291
|
</request>
|
|
3165
3292
|
</endpoint>
|
|
3166
|
-
<fallback>
|
|
3167
|
-
<proxy to='https://...' />
|
|
3168
|
-
</fallback>
|
|
3169
3293
|
</api>
|
|
3294
|
+
<response>
|
|
3295
|
+
<proxy to='https://...' />
|
|
3296
|
+
</response>
|
|
3170
3297
|
</server>
|
|
3171
3298
|
)
|
|
3172
3299
|
```
|
|
@@ -3175,7 +3302,7 @@ export default (
|
|
|
3175
3302
|
|
|
3176
3303
|
[← back](#run-time)
|
|
3177
3304
|
|
|
3178
|
-
MUST be placed in [\<request>](#request) or [\<
|
|
3305
|
+
MUST be placed in [\<request>](#request) or [\<response>](#response).
|
|
3179
3306
|
|
|
3180
3307
|
You can redirect users to another resource. It adds `Cache-Control` header by default.
|
|
3181
3308
|
|
|
@@ -3191,10 +3318,10 @@ export default (
|
|
|
3191
3318
|
<redirect to='https://...' />
|
|
3192
3319
|
</request>
|
|
3193
3320
|
</endpoint>
|
|
3194
|
-
<fallback>
|
|
3195
|
-
<redirect to='https://...' />
|
|
3196
|
-
</fallback>
|
|
3197
3321
|
</api>
|
|
3322
|
+
<response>
|
|
3323
|
+
<redirect to='https://...' />
|
|
3324
|
+
</response>
|
|
3198
3325
|
</server>
|
|
3199
3326
|
)
|
|
3200
3327
|
```
|
|
@@ -3219,13 +3346,13 @@ export default (
|
|
|
3219
3346
|
/>
|
|
3220
3347
|
</request>
|
|
3221
3348
|
</endpoint>
|
|
3222
|
-
<fallback>
|
|
3223
|
-
<redirect
|
|
3224
|
-
status={303}
|
|
3225
|
-
to='https://...'
|
|
3226
|
-
/>
|
|
3227
|
-
</fallback>
|
|
3228
3349
|
</api>
|
|
3350
|
+
<response>
|
|
3351
|
+
<redirect
|
|
3352
|
+
status={303}
|
|
3353
|
+
to='https://...'
|
|
3354
|
+
/>
|
|
3355
|
+
</response>
|
|
3229
3356
|
</server>
|
|
3230
3357
|
)
|
|
3231
3358
|
```
|
|
@@ -3234,7 +3361,7 @@ export default (
|
|
|
3234
3361
|
|
|
3235
3362
|
[← back](#run-time)
|
|
3236
3363
|
|
|
3237
|
-
MUST be placed in [\<request>](#request) or [\<
|
|
3364
|
+
MUST be placed in [\<request>](#request) or [\<response>](#response).
|
|
3238
3365
|
|
|
3239
3366
|
`<cms>` helps to return files from a folder by path. It checks files run-time on the server.
|
|
3240
3367
|
|
|
@@ -3242,11 +3369,9 @@ MUST be placed in [\<request>](#request) or [\<fallback>](#fallback).
|
|
|
3242
3369
|
```typescript jsx
|
|
3243
3370
|
export default (
|
|
3244
3371
|
<server>
|
|
3245
|
-
<
|
|
3246
|
-
<
|
|
3247
|
-
|
|
3248
|
-
</fallback>
|
|
3249
|
-
</api>
|
|
3372
|
+
<response>
|
|
3373
|
+
<cms />
|
|
3374
|
+
</response>
|
|
3250
3375
|
</server>
|
|
3251
3376
|
)
|
|
3252
3377
|
```
|
|
@@ -3263,11 +3388,9 @@ You can change root folder by `dir` property.
|
|
|
3263
3388
|
```typescript jsx
|
|
3264
3389
|
export default (
|
|
3265
3390
|
<server>
|
|
3266
|
-
<
|
|
3267
|
-
<
|
|
3268
|
-
|
|
3269
|
-
</fallback>
|
|
3270
|
-
</api>
|
|
3391
|
+
<response>
|
|
3392
|
+
<cms dir='src' />
|
|
3393
|
+
</response>
|
|
3271
3394
|
</server>
|
|
3272
3395
|
)
|
|
3273
3396
|
```
|
|
@@ -3284,9 +3407,9 @@ you get the index file in `src` folder.
|
|
|
3284
3407
|
export default (
|
|
3285
3408
|
<server>
|
|
3286
3409
|
<api prefix='/src'>
|
|
3287
|
-
<
|
|
3410
|
+
<response>
|
|
3288
3411
|
<cms />
|
|
3289
|
-
</
|
|
3412
|
+
</response>
|
|
3290
3413
|
</api>
|
|
3291
3414
|
</server>
|
|
3292
3415
|
)
|
|
@@ -3302,9 +3425,9 @@ You can reduce the path for matching by prefix property of `<cms>`.
|
|
|
3302
3425
|
export default (
|
|
3303
3426
|
<server>
|
|
3304
3427
|
<api prefix='/api'>
|
|
3305
|
-
<
|
|
3428
|
+
<response>
|
|
3306
3429
|
<cms prefix='/api' />
|
|
3307
|
-
</
|
|
3430
|
+
</response>
|
|
3308
3431
|
</api>
|
|
3309
3432
|
</server>
|
|
3310
3433
|
)
|
|
@@ -3320,13 +3443,11 @@ You can handle if a file was not found by children elements of `<cms>`.
|
|
|
3320
3443
|
```typescript jsx
|
|
3321
3444
|
export default (
|
|
3322
3445
|
<server>
|
|
3323
|
-
<
|
|
3324
|
-
<
|
|
3325
|
-
<
|
|
3326
|
-
|
|
3327
|
-
|
|
3328
|
-
</fallback>
|
|
3329
|
-
</api>
|
|
3446
|
+
<response>
|
|
3447
|
+
<cms>
|
|
3448
|
+
<error status={404} />
|
|
3449
|
+
</cms>
|
|
3450
|
+
</response>
|
|
3330
3451
|
</server>
|
|
3331
3452
|
)
|
|
3332
3453
|
```
|
|
@@ -3335,7 +3456,7 @@ export default (
|
|
|
3335
3456
|
|
|
3336
3457
|
[← back](#run-time)
|
|
3337
3458
|
|
|
3338
|
-
It returns a file. MUST be placed in [\<request>](#request) or [\<
|
|
3459
|
+
It returns a file. MUST be placed in [\<request>](#request) or [\<response>](#response).
|
|
3339
3460
|
|
|
3340
3461
|
It adds `Content-Length` and `Content-Type` automatically.
|
|
3341
3462
|
|
|
@@ -3345,13 +3466,9 @@ It has a REQUIRED property of `path`.
|
|
|
3345
3466
|
```typescript jsx
|
|
3346
3467
|
export default (
|
|
3347
3468
|
<server>
|
|
3348
|
-
<
|
|
3349
|
-
<
|
|
3350
|
-
|
|
3351
|
-
path='package.json'
|
|
3352
|
-
/>
|
|
3353
|
-
</fallback>
|
|
3354
|
-
</api>
|
|
3469
|
+
<response>
|
|
3470
|
+
<file path='package.json' />
|
|
3471
|
+
</response>
|
|
3355
3472
|
</server>
|
|
3356
3473
|
)
|
|
3357
3474
|
```
|
|
@@ -3366,20 +3483,18 @@ You can handle if a file was not found by children elements of `<file>`.
|
|
|
3366
3483
|
```typescript jsx
|
|
3367
3484
|
export default (
|
|
3368
3485
|
<server>
|
|
3369
|
-
<
|
|
3370
|
-
<
|
|
3371
|
-
<
|
|
3372
|
-
|
|
3373
|
-
|
|
3374
|
-
</fallback>
|
|
3375
|
-
</api>
|
|
3486
|
+
<response>
|
|
3487
|
+
<file path='file_is_not_exist.txt'>
|
|
3488
|
+
<error status={404} />
|
|
3489
|
+
</file>
|
|
3490
|
+
</response>
|
|
3376
3491
|
</server>
|
|
3377
3492
|
)
|
|
3378
3493
|
```
|
|
3379
3494
|
|
|
3380
3495
|
### \<header>
|
|
3381
3496
|
|
|
3382
|
-
MUST be placed in [\<request>](#request) or [\<
|
|
3497
|
+
MUST be placed in [\<request>](#request) or [\<response>](#response).
|
|
3383
3498
|
|
|
3384
3499
|
[← back](#run-time)
|
|
3385
3500
|
|
|
@@ -3389,22 +3504,20 @@ You can add an HTTP header into response by `<header>` element.
|
|
|
3389
3504
|
```typescript jsx
|
|
3390
3505
|
export default (
|
|
3391
3506
|
<server>
|
|
3392
|
-
<
|
|
3393
|
-
<
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
</fallback>
|
|
3400
|
-
</api>
|
|
3507
|
+
<response>
|
|
3508
|
+
<header
|
|
3509
|
+
key='Cache-Control'
|
|
3510
|
+
value='no-cache, no-store, must-revalidate'
|
|
3511
|
+
/>
|
|
3512
|
+
<success />
|
|
3513
|
+
</response>
|
|
3401
3514
|
</server>
|
|
3402
3515
|
)
|
|
3403
3516
|
```
|
|
3404
3517
|
|
|
3405
3518
|
### \<cookie>
|
|
3406
3519
|
|
|
3407
|
-
MUST be placed in [\<request>](#request) or [\<
|
|
3520
|
+
MUST be placed in [\<request>](#request) or [\<response>](#response).
|
|
3408
3521
|
|
|
3409
3522
|
[← back](#run-time)
|
|
3410
3523
|
|
|
@@ -3414,18 +3527,16 @@ You can add/remove a cookie into response by `<cookie>` element.
|
|
|
3414
3527
|
```typescript jsx
|
|
3415
3528
|
export default (
|
|
3416
3529
|
<server>
|
|
3417
|
-
<
|
|
3418
|
-
<
|
|
3419
|
-
|
|
3420
|
-
|
|
3421
|
-
|
|
3422
|
-
|
|
3423
|
-
|
|
3424
|
-
|
|
3425
|
-
|
|
3426
|
-
|
|
3427
|
-
</fallback>
|
|
3428
|
-
</api>
|
|
3530
|
+
<response>
|
|
3531
|
+
<cookie
|
|
3532
|
+
key='token'
|
|
3533
|
+
value='...'
|
|
3534
|
+
/>
|
|
3535
|
+
<cookie
|
|
3536
|
+
key='removedCookie'
|
|
3537
|
+
/>
|
|
3538
|
+
<success />
|
|
3539
|
+
</response>
|
|
3429
3540
|
</server>
|
|
3430
3541
|
)
|
|
3431
3542
|
```
|
|
@@ -3439,16 +3550,14 @@ By default, no domain is set, and most clients will consider the cookie to apply
|
|
|
3439
3550
|
```typescript jsx
|
|
3440
3551
|
export default (
|
|
3441
3552
|
<server>
|
|
3442
|
-
<
|
|
3443
|
-
<
|
|
3444
|
-
|
|
3445
|
-
|
|
3446
|
-
|
|
3447
|
-
|
|
3448
|
-
|
|
3449
|
-
|
|
3450
|
-
</fallback>
|
|
3451
|
-
</api>
|
|
3553
|
+
<response>
|
|
3554
|
+
<cookie
|
|
3555
|
+
domain='.example.com'
|
|
3556
|
+
key='token'
|
|
3557
|
+
value='...'
|
|
3558
|
+
/>
|
|
3559
|
+
<success />
|
|
3560
|
+
</response>
|
|
3452
3561
|
</server>
|
|
3453
3562
|
)
|
|
3454
3563
|
```
|
|
@@ -3467,16 +3576,14 @@ Note the [cookie storage model specification](https://datatracker.ietf.org/doc/h
|
|
|
3467
3576
|
```typescript jsx
|
|
3468
3577
|
export default (
|
|
3469
3578
|
<server>
|
|
3470
|
-
<
|
|
3471
|
-
<
|
|
3472
|
-
|
|
3473
|
-
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
|
|
3477
|
-
|
|
3478
|
-
</fallback>
|
|
3479
|
-
</api>
|
|
3579
|
+
<response>
|
|
3580
|
+
<cookie
|
|
3581
|
+
expires={new Date('2050-01-01')}
|
|
3582
|
+
key='token'
|
|
3583
|
+
value='...'
|
|
3584
|
+
/>
|
|
3585
|
+
<success />
|
|
3586
|
+
</response>
|
|
3480
3587
|
</server>
|
|
3481
3588
|
)
|
|
3482
3589
|
```
|
|
@@ -3490,16 +3597,14 @@ Note be careful when setting this to true, as compliant clients will not allow c
|
|
|
3490
3597
|
```typescript jsx
|
|
3491
3598
|
export default (
|
|
3492
3599
|
<server>
|
|
3493
|
-
<
|
|
3494
|
-
<
|
|
3495
|
-
|
|
3496
|
-
|
|
3497
|
-
|
|
3498
|
-
|
|
3499
|
-
|
|
3500
|
-
|
|
3501
|
-
</fallback>
|
|
3502
|
-
</api>
|
|
3600
|
+
<response>
|
|
3601
|
+
<cookie
|
|
3602
|
+
httpOnly
|
|
3603
|
+
key='token'
|
|
3604
|
+
value='...'
|
|
3605
|
+
/>
|
|
3606
|
+
<success />
|
|
3607
|
+
</response>
|
|
3503
3608
|
</server>
|
|
3504
3609
|
)
|
|
3505
3610
|
```
|
|
@@ -3513,17 +3618,15 @@ Note the [cookie storage model specification](https://datatracker.ietf.org/doc/h
|
|
|
3513
3618
|
```typescript jsx
|
|
3514
3619
|
export default (
|
|
3515
3620
|
<server>
|
|
3516
|
-
<
|
|
3517
|
-
<
|
|
3518
|
-
|
|
3519
|
-
|
|
3520
|
-
|
|
3521
|
-
|
|
3522
|
-
|
|
3523
|
-
|
|
3524
|
-
|
|
3525
|
-
</fallback>
|
|
3526
|
-
</api>
|
|
3621
|
+
<response>
|
|
3622
|
+
<cookie
|
|
3623
|
+
httpOnly
|
|
3624
|
+
maxAge={9999}
|
|
3625
|
+
key='token'
|
|
3626
|
+
value='...'
|
|
3627
|
+
/>
|
|
3628
|
+
<success />
|
|
3629
|
+
</response>
|
|
3527
3630
|
</server>
|
|
3528
3631
|
)
|
|
3529
3632
|
```
|
|
@@ -3537,18 +3640,16 @@ By default, the path is considered the “default path”.
|
|
|
3537
3640
|
```typescript jsx
|
|
3538
3641
|
export default (
|
|
3539
3642
|
<server>
|
|
3540
|
-
<
|
|
3541
|
-
<
|
|
3542
|
-
|
|
3543
|
-
|
|
3544
|
-
|
|
3545
|
-
|
|
3546
|
-
|
|
3547
|
-
|
|
3548
|
-
|
|
3549
|
-
|
|
3550
|
-
</fallback>
|
|
3551
|
-
</api>
|
|
3643
|
+
<response>
|
|
3644
|
+
<cookie
|
|
3645
|
+
httpOnly
|
|
3646
|
+
maxAge={9999}
|
|
3647
|
+
path='/src'
|
|
3648
|
+
key='token'
|
|
3649
|
+
value='...'
|
|
3650
|
+
/>
|
|
3651
|
+
<success />
|
|
3652
|
+
</response>
|
|
3552
3653
|
</server>
|
|
3553
3654
|
)
|
|
3554
3655
|
```
|
|
@@ -3567,18 +3668,16 @@ note This is an attribute that has not yet been fully standardized, and may chan
|
|
|
3567
3668
|
```typescript jsx
|
|
3568
3669
|
export default (
|
|
3569
3670
|
<server>
|
|
3570
|
-
<
|
|
3571
|
-
<
|
|
3572
|
-
|
|
3573
|
-
|
|
3574
|
-
|
|
3575
|
-
|
|
3576
|
-
|
|
3577
|
-
|
|
3578
|
-
|
|
3579
|
-
|
|
3580
|
-
</fallback>
|
|
3581
|
-
</api>
|
|
3671
|
+
<response>
|
|
3672
|
+
<cookie
|
|
3673
|
+
httpOnly
|
|
3674
|
+
priority='high'
|
|
3675
|
+
path='/src'
|
|
3676
|
+
key='token'
|
|
3677
|
+
value='...'
|
|
3678
|
+
/>
|
|
3679
|
+
<success />
|
|
3680
|
+
</response>
|
|
3582
3681
|
</server>
|
|
3583
3682
|
)
|
|
3584
3683
|
```
|
|
@@ -3600,19 +3699,17 @@ This also means many clients may ignore this attribute until they understand it.
|
|
|
3600
3699
|
```typescript jsx
|
|
3601
3700
|
export default (
|
|
3602
3701
|
<server>
|
|
3603
|
-
<
|
|
3604
|
-
<
|
|
3605
|
-
|
|
3606
|
-
|
|
3607
|
-
|
|
3608
|
-
|
|
3609
|
-
|
|
3610
|
-
|
|
3611
|
-
|
|
3612
|
-
|
|
3613
|
-
|
|
3614
|
-
</fallback>
|
|
3615
|
-
</api>
|
|
3702
|
+
<response>
|
|
3703
|
+
<cookie
|
|
3704
|
+
httpOnly
|
|
3705
|
+
sameSite
|
|
3706
|
+
priority='high'
|
|
3707
|
+
path='/src'
|
|
3708
|
+
key='token'
|
|
3709
|
+
value='...'
|
|
3710
|
+
/>
|
|
3711
|
+
<success />
|
|
3712
|
+
</response>
|
|
3616
3713
|
</server>
|
|
3617
3714
|
)
|
|
3618
3715
|
```
|
|
@@ -3629,17 +3726,15 @@ Note be careful when setting this to true, as compliant clients will not send th
|
|
|
3629
3726
|
```typescript jsx
|
|
3630
3727
|
export default (
|
|
3631
3728
|
<server>
|
|
3632
|
-
<
|
|
3633
|
-
<
|
|
3634
|
-
|
|
3635
|
-
|
|
3636
|
-
|
|
3637
|
-
|
|
3638
|
-
|
|
3639
|
-
|
|
3640
|
-
|
|
3641
|
-
</fallback>
|
|
3642
|
-
</api>
|
|
3729
|
+
<response>
|
|
3730
|
+
<cookie
|
|
3731
|
+
httpOnly
|
|
3732
|
+
secure
|
|
3733
|
+
key='token'
|
|
3734
|
+
value='...'
|
|
3735
|
+
/>
|
|
3736
|
+
<success />
|
|
3737
|
+
</response>
|
|
3643
3738
|
</server>
|
|
3644
3739
|
)
|
|
3645
3740
|
```
|
|
@@ -3672,14 +3767,12 @@ import { SetToken } from './SetToken'
|
|
|
3672
3767
|
|
|
3673
3768
|
export default (
|
|
3674
3769
|
<server>
|
|
3675
|
-
<
|
|
3676
|
-
<
|
|
3677
|
-
|
|
3678
|
-
|
|
3679
|
-
|
|
3680
|
-
|
|
3681
|
-
</fallback>
|
|
3682
|
-
</api>
|
|
3770
|
+
<response>
|
|
3771
|
+
<SetToken
|
|
3772
|
+
value='...'
|
|
3773
|
+
/>
|
|
3774
|
+
<success />
|
|
3775
|
+
</response>
|
|
3683
3776
|
</server>
|
|
3684
3777
|
)
|
|
3685
3778
|
```
|
|
@@ -3704,7 +3797,7 @@ Real-time
|
|
|
3704
3797
|
[useClientIp](#useclientip)
|
|
3705
3798
|
|
|
3706
3799
|
Server start
|
|
3707
|
-
[
|
|
3800
|
+
[useServerPlugin](#useserverplugin)
|
|
3708
3801
|
|
|
3709
3802
|
Both
|
|
3710
3803
|
[useServer](#useserver)
|
|
@@ -3716,7 +3809,7 @@ Both
|
|
|
3716
3809
|
|
|
3717
3810
|
[← back](#hooks)
|
|
3718
3811
|
|
|
3719
|
-
This hook MUST be used in a component placed in [\<request>](#request) or [\<
|
|
3812
|
+
This hook MUST be used in a component placed in [\<request>](#request) or [\<response>](#response).
|
|
3720
3813
|
This hook returns current request instance.
|
|
3721
3814
|
|
|
3722
3815
|
*src/Component.tsx*
|
|
@@ -3737,7 +3830,7 @@ export function Component () {
|
|
|
3737
3830
|
|
|
3738
3831
|
[← back](#hooks)
|
|
3739
3832
|
|
|
3740
|
-
This hook MUST be used in a component placed in [\<request>](#request) or [\<
|
|
3833
|
+
This hook MUST be used in a component placed in [\<request>](#request) or [\<response>](#response).
|
|
3741
3834
|
This hook returns current response instance.
|
|
3742
3835
|
|
|
3743
3836
|
*src/Component.tsx*
|
|
@@ -3758,7 +3851,7 @@ export function Component () {
|
|
|
3758
3851
|
|
|
3759
3852
|
[← back](#hooks)
|
|
3760
3853
|
|
|
3761
|
-
This hook MUST be used in a component placed in [\<request>](#request) or [\<
|
|
3854
|
+
This hook MUST be used in a component placed in [\<request>](#request) or [\<response>](#response).
|
|
3762
3855
|
This hook returns current request headers object.
|
|
3763
3856
|
|
|
3764
3857
|
*src/Component.tsx*
|
|
@@ -3777,7 +3870,7 @@ export function Component () {
|
|
|
3777
3870
|
|
|
3778
3871
|
[← back](#hooks)
|
|
3779
3872
|
|
|
3780
|
-
This hook MUST be used in a component placed in [\<request>](#request) or [\<
|
|
3873
|
+
This hook MUST be used in a component placed in [\<request>](#request) or [\<response>](#response).
|
|
3781
3874
|
This hook returns current request cookies object.
|
|
3782
3875
|
|
|
3783
3876
|
*src/Component.tsx*
|
|
@@ -3796,7 +3889,7 @@ export function Component () {
|
|
|
3796
3889
|
|
|
3797
3890
|
[← back](#hooks)
|
|
3798
3891
|
|
|
3799
|
-
This hook MUST be used in a component placed in [\<request>](#request) or [\<
|
|
3892
|
+
This hook MUST be used in a component placed in [\<request>](#request) or [\<response>](#response).
|
|
3800
3893
|
This hook returns current request URL path as a `string`.
|
|
3801
3894
|
|
|
3802
3895
|
*src/Component.tsx*
|
|
@@ -3815,7 +3908,7 @@ export function Component () {
|
|
|
3815
3908
|
|
|
3816
3909
|
[← back](#hooks)
|
|
3817
3910
|
|
|
3818
|
-
This hook MUST be used in a component placed in [\<request>](#request) or [\<
|
|
3911
|
+
This hook MUST be used in a component placed in [\<request>](#request) or [\<response>](#response).
|
|
3819
3912
|
This hook returns an object of URL params you set by [\<param>](#param).
|
|
3820
3913
|
|
|
3821
3914
|
*src/Component.tsx*
|
|
@@ -3833,7 +3926,7 @@ export function Component () {
|
|
|
3833
3926
|
|
|
3834
3927
|
[← back](#hooks)
|
|
3835
3928
|
|
|
3836
|
-
This hook MUST be used in a component placed in [\<request>](#request) or [\<
|
|
3929
|
+
This hook MUST be used in a component placed in [\<request>](#request) or [\<response>](#response).
|
|
3837
3930
|
This hook returns an object of URL query params.
|
|
3838
3931
|
|
|
3839
3932
|
*src/Component.tsx*
|
|
@@ -3851,7 +3944,7 @@ export function Component () {
|
|
|
3851
3944
|
|
|
3852
3945
|
[← back](#hooks)
|
|
3853
3946
|
|
|
3854
|
-
This hook MUST be used in a component placed in [\<request>](#request) or [\<
|
|
3947
|
+
This hook MUST be used in a component placed in [\<request>](#request) or [\<response>](#response).
|
|
3855
3948
|
This hook returns current request body.
|
|
3856
3949
|
|
|
3857
3950
|
*src/Component.tsx*
|
|
@@ -3870,7 +3963,7 @@ export function Component () {
|
|
|
3870
3963
|
[← back](#hooks)
|
|
3871
3964
|
|
|
3872
3965
|
This hook returns request user IP.
|
|
3873
|
-
This hook MUST be used in a component placed in [\<request>](#request) or [\<
|
|
3966
|
+
This hook MUST be used in a component placed in [\<request>](#request) or [\<response>](#response).
|
|
3874
3967
|
|
|
3875
3968
|
*src/Component.tsx*
|
|
3876
3969
|
```typescript jsx
|
|
@@ -3883,7 +3976,7 @@ export function Component () {
|
|
|
3883
3976
|
}
|
|
3884
3977
|
```
|
|
3885
3978
|
|
|
3886
|
-
###
|
|
3979
|
+
### useServerPlugin
|
|
3887
3980
|
|
|
3888
3981
|
[← back](#hooks)
|
|
3889
3982
|
|
|
@@ -3891,25 +3984,24 @@ This hook adds a request plugin function.
|
|
|
3891
3984
|
The function runs before check endpoints.
|
|
3892
3985
|
If the function returns `true` the request handling stops, and you get full control over the request.
|
|
3893
3986
|
|
|
3894
|
-
This hook MUST be used in a component placed in [\<
|
|
3987
|
+
This hook MUST be used in a component placed in [\<server>](#server).
|
|
3895
3988
|
|
|
3896
3989
|
*src/SecretEndpoint.tsx*
|
|
3897
3990
|
```typescript jsx
|
|
3898
|
-
import { useRequestPlugin } from '@innet/sever'
|
|
3991
|
+
import { useRequestPlugin, useAction } from '@innet/sever'
|
|
3899
3992
|
|
|
3900
3993
|
export function SecretEndpoint () {
|
|
3901
|
-
|
|
3902
|
-
|
|
3903
|
-
|
|
3904
|
-
|
|
3905
|
-
|
|
3906
|
-
return true
|
|
3994
|
+
useServerPlugin(() => {
|
|
3995
|
+
const action = useAction()
|
|
3996
|
+
|
|
3997
|
+
if (action.path.startsWith('/secret-endpoint')) {
|
|
3998
|
+
return <success>A secret message</success>
|
|
3907
3999
|
}
|
|
3908
4000
|
})
|
|
3909
4001
|
}
|
|
3910
4002
|
```
|
|
3911
4003
|
|
|
3912
|
-
Then use the plugin in [\<api>](#api).
|
|
4004
|
+
Then use the plugin in [\<server>](#server) or [\<api>](#api).
|
|
3913
4005
|
|
|
3914
4006
|
*src/app.tsx*
|
|
3915
4007
|
```typescript jsx
|
|
@@ -3917,12 +4009,10 @@ import { SecretEndpoint } from './SecretEndpoint'
|
|
|
3917
4009
|
|
|
3918
4010
|
export default (
|
|
3919
4011
|
<server>
|
|
3920
|
-
<
|
|
3921
|
-
|
|
3922
|
-
|
|
3923
|
-
|
|
3924
|
-
<SecretEndpoint />
|
|
3925
|
-
</api>
|
|
4012
|
+
<SecretEndpoint />
|
|
4013
|
+
<response>
|
|
4014
|
+
<error />
|
|
4015
|
+
</response>
|
|
3926
4016
|
</server>
|
|
3927
4017
|
)
|
|
3928
4018
|
```
|