@innet/server 2.0.0-alpha.13 → 2.0.0-alpha.15
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 +356 -363
- package/handler/handler.d.ts +1 -3
- package/handler/handler.es6.js +0 -2
- package/handler/handler.js +0 -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/useServer/useServer.d.ts +1 -0
- 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 +3 -3
- package/index.js +5 -5
- package/package.json +1 -1
- package/plugins/main/api/api.es6.js +34 -48
- package/plugins/main/api/api.js +33 -47
- package/plugins/main/endpoint/endpoint.es6.js +4 -1
- package/plugins/main/endpoint/endpoint.js +4 -1
- package/plugins/main/index.d.ts +0 -1
- package/plugins/main/index.es6.js +0 -1
- package/plugins/main/index.js +0 -1
- package/plugins/main/preset/index.es6.js +1 -1
- package/plugins/main/preset/index.js +0 -1
- package/plugins/main/preset/preset.d.ts +0 -4
- package/plugins/main/preset/preset.es6.js +6 -19
- package/plugins/main/preset/preset.js +4 -18
- 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/proxy/proxy.d.ts +3 -0
- package/plugins/request/proxy/proxy.es6.js +4 -1
- package/plugins/request/proxy/proxy.js +4 -1
- 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/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 +1 -1
- package/utils/generateTypes/generateTypes.es6.js +27 -13
- package/utils/generateTypes/generateTypes.js +27 -13
- 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/plugins/main/fallback/index.js +0 -9
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 (
|
|
@@ -108,6 +130,7 @@ You will see a base Open API JSON structure.
|
|
|
108
130
|
|
|
109
131
|
[\<server>](#server)
|
|
110
132
|
[\<api>](#api)
|
|
133
|
+
[\<request>](#request)
|
|
111
134
|
[\<preset>](#preset)
|
|
112
135
|
|
|
113
136
|
---
|
|
@@ -207,6 +230,19 @@ export default (
|
|
|
207
230
|
)
|
|
208
231
|
```
|
|
209
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
|
+
|
|
210
246
|
### \<api>
|
|
211
247
|
|
|
212
248
|
[← back](#main)
|
|
@@ -319,7 +355,7 @@ A regular expression scopes the API.
|
|
|
319
355
|
export default (
|
|
320
356
|
<server>
|
|
321
357
|
<api
|
|
322
|
-
include={
|
|
358
|
+
include={/^\/(api|openapi)/}
|
|
323
359
|
/>
|
|
324
360
|
</server>
|
|
325
361
|
)
|
|
@@ -335,11 +371,98 @@ export default (
|
|
|
335
371
|
<server>
|
|
336
372
|
<api prefix='/api' />
|
|
337
373
|
<api prefix='/openapi' />
|
|
338
|
-
<api exclude={
|
|
374
|
+
<api exclude={/^\/(api|openapi)/} />
|
|
339
375
|
</server>
|
|
340
376
|
)
|
|
341
377
|
```
|
|
342
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
|
+
|
|
343
466
|
### \<preset>
|
|
344
467
|
|
|
345
468
|
[← back](#main)
|
|
@@ -1472,6 +1595,26 @@ return (
|
|
|
1472
1595
|
)
|
|
1473
1596
|
```
|
|
1474
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
|
+
|
|
1475
1618
|
## Primitive Data
|
|
1476
1619
|
|
|
1477
1620
|
[← back](#index)
|
|
@@ -2894,12 +3037,7 @@ Next elements relate to run-time action.
|
|
|
2894
3037
|
This action calls on user request.
|
|
2895
3038
|
|
|
2896
3039
|
[← back](#index)
|
|
2897
|
-
|
|
2898
|
-
Parent
|
|
2899
|
-
[\<fallback>](#fallback)
|
|
2900
|
-
[\<request>](#request)
|
|
2901
|
-
|
|
2902
|
-
Children
|
|
3040
|
+
|
|
2903
3041
|
[\<success>](#success)
|
|
2904
3042
|
[\<error>](#error)
|
|
2905
3043
|
[\<proxy>](#proxy)
|
|
@@ -2911,94 +3049,6 @@ Children
|
|
|
2911
3049
|
|
|
2912
3050
|
---
|
|
2913
3051
|
|
|
2914
|
-
### \<fallback>
|
|
2915
|
-
|
|
2916
|
-
[← back](#run-time)
|
|
2917
|
-
|
|
2918
|
-
By default, `<api>` server returns 404 with empty body.
|
|
2919
|
-
[\<fallback>](#fallback) element defines default server response.
|
|
2920
|
-
This element MUST be placed in `<api>`.
|
|
2921
|
-
You MUST use one [\<fallback>](#fallback) per `<api>`.
|
|
2922
|
-
Can contain elements available inside [\<request>](#request).
|
|
2923
|
-
|
|
2924
|
-
*src/app.tsx*
|
|
2925
|
-
```typescript jsx
|
|
2926
|
-
export default (
|
|
2927
|
-
<server>
|
|
2928
|
-
<api>
|
|
2929
|
-
<fallback>
|
|
2930
|
-
<error
|
|
2931
|
-
code='unknownEndpoint'
|
|
2932
|
-
/>
|
|
2933
|
-
</fallback>
|
|
2934
|
-
</api>
|
|
2935
|
-
</server>
|
|
2936
|
-
)
|
|
2937
|
-
```
|
|
2938
|
-
|
|
2939
|
-
If you open the application on any URL except for `/`, you can see the next response.
|
|
2940
|
-
|
|
2941
|
-
```json
|
|
2942
|
-
{
|
|
2943
|
-
"error": "unknownEndpoint"
|
|
2944
|
-
}
|
|
2945
|
-
```
|
|
2946
|
-
|
|
2947
|
-
The next elements are placed in [\<request>](#request) or [\<fallback>](#fallback)
|
|
2948
|
-
|
|
2949
|
-
### \<request>
|
|
2950
|
-
|
|
2951
|
-
[← back](#run-time)
|
|
2952
|
-
|
|
2953
|
-
This element MUST be placed in `<endpoint>` element.
|
|
2954
|
-
It defines run-time call handler for the endpoint.
|
|
2955
|
-
|
|
2956
|
-
*src/app.tsx*
|
|
2957
|
-
```typescript jsx
|
|
2958
|
-
export default (
|
|
2959
|
-
<server>
|
|
2960
|
-
<api>
|
|
2961
|
-
<endpoint method='get' path='/partners'>
|
|
2962
|
-
<request>
|
|
2963
|
-
<success>
|
|
2964
|
-
{{partners: []}}
|
|
2965
|
-
</success>
|
|
2966
|
-
</request>
|
|
2967
|
-
</endpoint>
|
|
2968
|
-
</api>
|
|
2969
|
-
</server>
|
|
2970
|
-
)
|
|
2971
|
-
```
|
|
2972
|
-
|
|
2973
|
-
You can place a component inside it.
|
|
2974
|
-
The component will run when the endpoint will be triggered.
|
|
2975
|
-
|
|
2976
|
-
*src/app.tsx*
|
|
2977
|
-
```typescript jsx
|
|
2978
|
-
import { GetPartners } from './GetPartners'
|
|
2979
|
-
|
|
2980
|
-
export default (
|
|
2981
|
-
<server>
|
|
2982
|
-
<api>
|
|
2983
|
-
<endpoint method='get' path='/partners'>
|
|
2984
|
-
<request>
|
|
2985
|
-
<GetPartners />
|
|
2986
|
-
</request>
|
|
2987
|
-
</endpoint>
|
|
2988
|
-
</api>
|
|
2989
|
-
</server>
|
|
2990
|
-
)
|
|
2991
|
-
```
|
|
2992
|
-
|
|
2993
|
-
*src/GetPartners.tsx*
|
|
2994
|
-
```typescript jsx
|
|
2995
|
-
export const GetPartners = () => (
|
|
2996
|
-
<success>
|
|
2997
|
-
{{partners: []}}
|
|
2998
|
-
</success>
|
|
2999
|
-
)
|
|
3000
|
-
```
|
|
3001
|
-
|
|
3002
3052
|
### \<success>
|
|
3003
3053
|
|
|
3004
3054
|
[← back](#run-time)
|
|
@@ -3009,11 +3059,9 @@ This is a base element to return a success data.
|
|
|
3009
3059
|
```typescript jsx
|
|
3010
3060
|
export default (
|
|
3011
3061
|
<server>
|
|
3012
|
-
<
|
|
3013
|
-
<
|
|
3014
|
-
|
|
3015
|
-
</fallback>
|
|
3016
|
-
</api>
|
|
3062
|
+
<response>
|
|
3063
|
+
<success />
|
|
3064
|
+
</response>
|
|
3017
3065
|
</server>
|
|
3018
3066
|
)
|
|
3019
3067
|
```
|
|
@@ -3028,13 +3076,11 @@ const data = {...}
|
|
|
3028
3076
|
|
|
3029
3077
|
export default (
|
|
3030
3078
|
<server>
|
|
3031
|
-
<
|
|
3032
|
-
<
|
|
3033
|
-
|
|
3034
|
-
|
|
3035
|
-
|
|
3036
|
-
</fallback>
|
|
3037
|
-
</api>
|
|
3079
|
+
<response>
|
|
3080
|
+
<success>
|
|
3081
|
+
{data}
|
|
3082
|
+
</success>
|
|
3083
|
+
</response>
|
|
3038
3084
|
</server>
|
|
3039
3085
|
)
|
|
3040
3086
|
```
|
|
@@ -3051,13 +3097,11 @@ const data = {...}
|
|
|
3051
3097
|
|
|
3052
3098
|
export default (
|
|
3053
3099
|
<server>
|
|
3054
|
-
<
|
|
3055
|
-
<
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
</fallback>
|
|
3060
|
-
</api>
|
|
3100
|
+
<response>
|
|
3101
|
+
<success status='created'>
|
|
3102
|
+
{data}
|
|
3103
|
+
</success>
|
|
3104
|
+
</response>
|
|
3061
3105
|
</server>
|
|
3062
3106
|
)
|
|
3063
3107
|
```
|
|
@@ -3072,13 +3116,11 @@ const data = {...}
|
|
|
3072
3116
|
|
|
3073
3117
|
export default (
|
|
3074
3118
|
<server>
|
|
3075
|
-
<
|
|
3076
|
-
<
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
|
|
3080
|
-
</fallback>
|
|
3081
|
-
</api>
|
|
3119
|
+
<response>
|
|
3120
|
+
<success status={201}>
|
|
3121
|
+
{data}
|
|
3122
|
+
</success>
|
|
3123
|
+
</response>
|
|
3082
3124
|
</server>
|
|
3083
3125
|
)
|
|
3084
3126
|
```
|
|
@@ -3092,13 +3134,11 @@ By default, it checks children element to define the prop.
|
|
|
3092
3134
|
```typescript jsx
|
|
3093
3135
|
export default (
|
|
3094
3136
|
<server>
|
|
3095
|
-
<
|
|
3096
|
-
<
|
|
3097
|
-
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
</fallback>
|
|
3101
|
-
</api>
|
|
3137
|
+
<response>
|
|
3138
|
+
<success contentType='text/html'>
|
|
3139
|
+
Hello World!
|
|
3140
|
+
</success>
|
|
3141
|
+
</response>
|
|
3102
3142
|
</server>
|
|
3103
3143
|
)
|
|
3104
3144
|
```
|
|
@@ -3108,17 +3148,15 @@ export default (
|
|
|
3108
3148
|
[← back](#run-time)
|
|
3109
3149
|
|
|
3110
3150
|
Returns an error.
|
|
3111
|
-
This element MUST be placed in [\<request>](#request) or [\<
|
|
3151
|
+
This element MUST be placed in [\<request>](#request) or [\<response>](#response).
|
|
3112
3152
|
|
|
3113
3153
|
*src/app.tsx*
|
|
3114
3154
|
```typescript jsx
|
|
3115
3155
|
export default (
|
|
3116
3156
|
<server>
|
|
3117
|
-
<
|
|
3118
|
-
<
|
|
3119
|
-
|
|
3120
|
-
</fallback>
|
|
3121
|
-
</api>
|
|
3157
|
+
<response>
|
|
3158
|
+
<error />
|
|
3159
|
+
</response>
|
|
3122
3160
|
</server>
|
|
3123
3161
|
)
|
|
3124
3162
|
```
|
|
@@ -3131,13 +3169,11 @@ const data = {...}
|
|
|
3131
3169
|
|
|
3132
3170
|
export default (
|
|
3133
3171
|
<server>
|
|
3134
|
-
<
|
|
3135
|
-
<
|
|
3136
|
-
|
|
3137
|
-
|
|
3138
|
-
|
|
3139
|
-
</fallback>
|
|
3140
|
-
</api>
|
|
3172
|
+
<response>
|
|
3173
|
+
<error>
|
|
3174
|
+
{data}
|
|
3175
|
+
</error>
|
|
3176
|
+
</response>
|
|
3141
3177
|
</server>
|
|
3142
3178
|
)
|
|
3143
3179
|
```
|
|
@@ -3153,13 +3189,11 @@ const data = {
|
|
|
3153
3189
|
|
|
3154
3190
|
export default (
|
|
3155
3191
|
<server>
|
|
3156
|
-
<
|
|
3157
|
-
<
|
|
3158
|
-
|
|
3159
|
-
|
|
3160
|
-
|
|
3161
|
-
</fallback>
|
|
3162
|
-
</api>
|
|
3192
|
+
<response>
|
|
3193
|
+
<error status='notFound'>
|
|
3194
|
+
{data}
|
|
3195
|
+
</error>
|
|
3196
|
+
</response>
|
|
3163
3197
|
</server>
|
|
3164
3198
|
)
|
|
3165
3199
|
```
|
|
@@ -3174,13 +3208,11 @@ const data = {
|
|
|
3174
3208
|
|
|
3175
3209
|
export default (
|
|
3176
3210
|
<server>
|
|
3177
|
-
<
|
|
3178
|
-
<
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
3182
|
-
</fallback>
|
|
3183
|
-
</api>
|
|
3211
|
+
<response>
|
|
3212
|
+
<error status={404}>
|
|
3213
|
+
{data}
|
|
3214
|
+
</error>
|
|
3215
|
+
</response>
|
|
3184
3216
|
</server>
|
|
3185
3217
|
)
|
|
3186
3218
|
```
|
|
@@ -3208,15 +3240,13 @@ const data = {
|
|
|
3208
3240
|
|
|
3209
3241
|
export default (
|
|
3210
3242
|
<server>
|
|
3211
|
-
<
|
|
3212
|
-
<
|
|
3213
|
-
|
|
3214
|
-
|
|
3215
|
-
|
|
3216
|
-
|
|
3217
|
-
|
|
3218
|
-
</fallback>
|
|
3219
|
-
</api>
|
|
3243
|
+
<response>
|
|
3244
|
+
<error
|
|
3245
|
+
code='noUser'
|
|
3246
|
+
status='notFound'>
|
|
3247
|
+
{data}
|
|
3248
|
+
</error>
|
|
3249
|
+
</response>
|
|
3220
3250
|
</server>
|
|
3221
3251
|
)
|
|
3222
3252
|
```
|
|
@@ -3244,7 +3274,7 @@ There are some default errors:
|
|
|
3244
3274
|
|
|
3245
3275
|
[← back](#run-time)
|
|
3246
3276
|
|
|
3247
|
-
MUST be placed in [\<request>](#request) or [\<
|
|
3277
|
+
MUST be placed in [\<request>](#request) or [\<response>](#response).
|
|
3248
3278
|
|
|
3249
3279
|
You can easy proxy endpoints to another server/service.
|
|
3250
3280
|
|
|
@@ -3260,10 +3290,10 @@ export default (
|
|
|
3260
3290
|
<proxy to='https://...' />
|
|
3261
3291
|
</request>
|
|
3262
3292
|
</endpoint>
|
|
3263
|
-
<fallback>
|
|
3264
|
-
<proxy to='https://...' />
|
|
3265
|
-
</fallback>
|
|
3266
3293
|
</api>
|
|
3294
|
+
<response>
|
|
3295
|
+
<proxy to='https://...' />
|
|
3296
|
+
</response>
|
|
3267
3297
|
</server>
|
|
3268
3298
|
)
|
|
3269
3299
|
```
|
|
@@ -3272,7 +3302,7 @@ export default (
|
|
|
3272
3302
|
|
|
3273
3303
|
[← back](#run-time)
|
|
3274
3304
|
|
|
3275
|
-
MUST be placed in [\<request>](#request) or [\<
|
|
3305
|
+
MUST be placed in [\<request>](#request) or [\<response>](#response).
|
|
3276
3306
|
|
|
3277
3307
|
You can redirect users to another resource. It adds `Cache-Control` header by default.
|
|
3278
3308
|
|
|
@@ -3288,10 +3318,10 @@ export default (
|
|
|
3288
3318
|
<redirect to='https://...' />
|
|
3289
3319
|
</request>
|
|
3290
3320
|
</endpoint>
|
|
3291
|
-
<fallback>
|
|
3292
|
-
<redirect to='https://...' />
|
|
3293
|
-
</fallback>
|
|
3294
3321
|
</api>
|
|
3322
|
+
<response>
|
|
3323
|
+
<redirect to='https://...' />
|
|
3324
|
+
</response>
|
|
3295
3325
|
</server>
|
|
3296
3326
|
)
|
|
3297
3327
|
```
|
|
@@ -3316,13 +3346,13 @@ export default (
|
|
|
3316
3346
|
/>
|
|
3317
3347
|
</request>
|
|
3318
3348
|
</endpoint>
|
|
3319
|
-
<fallback>
|
|
3320
|
-
<redirect
|
|
3321
|
-
status={303}
|
|
3322
|
-
to='https://...'
|
|
3323
|
-
/>
|
|
3324
|
-
</fallback>
|
|
3325
3349
|
</api>
|
|
3350
|
+
<response>
|
|
3351
|
+
<redirect
|
|
3352
|
+
status={303}
|
|
3353
|
+
to='https://...'
|
|
3354
|
+
/>
|
|
3355
|
+
</response>
|
|
3326
3356
|
</server>
|
|
3327
3357
|
)
|
|
3328
3358
|
```
|
|
@@ -3331,7 +3361,7 @@ export default (
|
|
|
3331
3361
|
|
|
3332
3362
|
[← back](#run-time)
|
|
3333
3363
|
|
|
3334
|
-
MUST be placed in [\<request>](#request) or [\<
|
|
3364
|
+
MUST be placed in [\<request>](#request) or [\<response>](#response).
|
|
3335
3365
|
|
|
3336
3366
|
`<cms>` helps to return files from a folder by path. It checks files run-time on the server.
|
|
3337
3367
|
|
|
@@ -3339,11 +3369,9 @@ MUST be placed in [\<request>](#request) or [\<fallback>](#fallback).
|
|
|
3339
3369
|
```typescript jsx
|
|
3340
3370
|
export default (
|
|
3341
3371
|
<server>
|
|
3342
|
-
<
|
|
3343
|
-
<
|
|
3344
|
-
|
|
3345
|
-
</fallback>
|
|
3346
|
-
</api>
|
|
3372
|
+
<response>
|
|
3373
|
+
<cms />
|
|
3374
|
+
</response>
|
|
3347
3375
|
</server>
|
|
3348
3376
|
)
|
|
3349
3377
|
```
|
|
@@ -3360,11 +3388,9 @@ You can change root folder by `dir` property.
|
|
|
3360
3388
|
```typescript jsx
|
|
3361
3389
|
export default (
|
|
3362
3390
|
<server>
|
|
3363
|
-
<
|
|
3364
|
-
<
|
|
3365
|
-
|
|
3366
|
-
</fallback>
|
|
3367
|
-
</api>
|
|
3391
|
+
<response>
|
|
3392
|
+
<cms dir='src' />
|
|
3393
|
+
</response>
|
|
3368
3394
|
</server>
|
|
3369
3395
|
)
|
|
3370
3396
|
```
|
|
@@ -3381,9 +3407,9 @@ you get the index file in `src` folder.
|
|
|
3381
3407
|
export default (
|
|
3382
3408
|
<server>
|
|
3383
3409
|
<api prefix='/src'>
|
|
3384
|
-
<
|
|
3410
|
+
<response>
|
|
3385
3411
|
<cms />
|
|
3386
|
-
</
|
|
3412
|
+
</response>
|
|
3387
3413
|
</api>
|
|
3388
3414
|
</server>
|
|
3389
3415
|
)
|
|
@@ -3399,9 +3425,9 @@ You can reduce the path for matching by prefix property of `<cms>`.
|
|
|
3399
3425
|
export default (
|
|
3400
3426
|
<server>
|
|
3401
3427
|
<api prefix='/api'>
|
|
3402
|
-
<
|
|
3428
|
+
<response>
|
|
3403
3429
|
<cms prefix='/api' />
|
|
3404
|
-
</
|
|
3430
|
+
</response>
|
|
3405
3431
|
</api>
|
|
3406
3432
|
</server>
|
|
3407
3433
|
)
|
|
@@ -3417,13 +3443,11 @@ You can handle if a file was not found by children elements of `<cms>`.
|
|
|
3417
3443
|
```typescript jsx
|
|
3418
3444
|
export default (
|
|
3419
3445
|
<server>
|
|
3420
|
-
<
|
|
3421
|
-
<
|
|
3422
|
-
<
|
|
3423
|
-
|
|
3424
|
-
|
|
3425
|
-
</fallback>
|
|
3426
|
-
</api>
|
|
3446
|
+
<response>
|
|
3447
|
+
<cms>
|
|
3448
|
+
<error status={404} />
|
|
3449
|
+
</cms>
|
|
3450
|
+
</response>
|
|
3427
3451
|
</server>
|
|
3428
3452
|
)
|
|
3429
3453
|
```
|
|
@@ -3432,7 +3456,7 @@ export default (
|
|
|
3432
3456
|
|
|
3433
3457
|
[← back](#run-time)
|
|
3434
3458
|
|
|
3435
|
-
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).
|
|
3436
3460
|
|
|
3437
3461
|
It adds `Content-Length` and `Content-Type` automatically.
|
|
3438
3462
|
|
|
@@ -3442,13 +3466,9 @@ It has a REQUIRED property of `path`.
|
|
|
3442
3466
|
```typescript jsx
|
|
3443
3467
|
export default (
|
|
3444
3468
|
<server>
|
|
3445
|
-
<
|
|
3446
|
-
<
|
|
3447
|
-
|
|
3448
|
-
path='package.json'
|
|
3449
|
-
/>
|
|
3450
|
-
</fallback>
|
|
3451
|
-
</api>
|
|
3469
|
+
<response>
|
|
3470
|
+
<file path='package.json' />
|
|
3471
|
+
</response>
|
|
3452
3472
|
</server>
|
|
3453
3473
|
)
|
|
3454
3474
|
```
|
|
@@ -3463,20 +3483,18 @@ You can handle if a file was not found by children elements of `<file>`.
|
|
|
3463
3483
|
```typescript jsx
|
|
3464
3484
|
export default (
|
|
3465
3485
|
<server>
|
|
3466
|
-
<
|
|
3467
|
-
<
|
|
3468
|
-
<
|
|
3469
|
-
|
|
3470
|
-
|
|
3471
|
-
</fallback>
|
|
3472
|
-
</api>
|
|
3486
|
+
<response>
|
|
3487
|
+
<file path='file_is_not_exist.txt'>
|
|
3488
|
+
<error status={404} />
|
|
3489
|
+
</file>
|
|
3490
|
+
</response>
|
|
3473
3491
|
</server>
|
|
3474
3492
|
)
|
|
3475
3493
|
```
|
|
3476
3494
|
|
|
3477
3495
|
### \<header>
|
|
3478
3496
|
|
|
3479
|
-
MUST be placed in [\<request>](#request) or [\<
|
|
3497
|
+
MUST be placed in [\<request>](#request) or [\<response>](#response).
|
|
3480
3498
|
|
|
3481
3499
|
[← back](#run-time)
|
|
3482
3500
|
|
|
@@ -3486,22 +3504,20 @@ You can add an HTTP header into response by `<header>` element.
|
|
|
3486
3504
|
```typescript jsx
|
|
3487
3505
|
export default (
|
|
3488
3506
|
<server>
|
|
3489
|
-
<
|
|
3490
|
-
<
|
|
3491
|
-
|
|
3492
|
-
|
|
3493
|
-
|
|
3494
|
-
|
|
3495
|
-
|
|
3496
|
-
</fallback>
|
|
3497
|
-
</api>
|
|
3507
|
+
<response>
|
|
3508
|
+
<header
|
|
3509
|
+
key='Cache-Control'
|
|
3510
|
+
value='no-cache, no-store, must-revalidate'
|
|
3511
|
+
/>
|
|
3512
|
+
<success />
|
|
3513
|
+
</response>
|
|
3498
3514
|
</server>
|
|
3499
3515
|
)
|
|
3500
3516
|
```
|
|
3501
3517
|
|
|
3502
3518
|
### \<cookie>
|
|
3503
3519
|
|
|
3504
|
-
MUST be placed in [\<request>](#request) or [\<
|
|
3520
|
+
MUST be placed in [\<request>](#request) or [\<response>](#response).
|
|
3505
3521
|
|
|
3506
3522
|
[← back](#run-time)
|
|
3507
3523
|
|
|
@@ -3511,18 +3527,16 @@ You can add/remove a cookie into response by `<cookie>` element.
|
|
|
3511
3527
|
```typescript jsx
|
|
3512
3528
|
export default (
|
|
3513
3529
|
<server>
|
|
3514
|
-
<
|
|
3515
|
-
<
|
|
3516
|
-
|
|
3517
|
-
|
|
3518
|
-
|
|
3519
|
-
|
|
3520
|
-
|
|
3521
|
-
|
|
3522
|
-
|
|
3523
|
-
|
|
3524
|
-
</fallback>
|
|
3525
|
-
</api>
|
|
3530
|
+
<response>
|
|
3531
|
+
<cookie
|
|
3532
|
+
key='token'
|
|
3533
|
+
value='...'
|
|
3534
|
+
/>
|
|
3535
|
+
<cookie
|
|
3536
|
+
key='removedCookie'
|
|
3537
|
+
/>
|
|
3538
|
+
<success />
|
|
3539
|
+
</response>
|
|
3526
3540
|
</server>
|
|
3527
3541
|
)
|
|
3528
3542
|
```
|
|
@@ -3536,16 +3550,14 @@ By default, no domain is set, and most clients will consider the cookie to apply
|
|
|
3536
3550
|
```typescript jsx
|
|
3537
3551
|
export default (
|
|
3538
3552
|
<server>
|
|
3539
|
-
<
|
|
3540
|
-
<
|
|
3541
|
-
|
|
3542
|
-
|
|
3543
|
-
|
|
3544
|
-
|
|
3545
|
-
|
|
3546
|
-
|
|
3547
|
-
</fallback>
|
|
3548
|
-
</api>
|
|
3553
|
+
<response>
|
|
3554
|
+
<cookie
|
|
3555
|
+
domain='.example.com'
|
|
3556
|
+
key='token'
|
|
3557
|
+
value='...'
|
|
3558
|
+
/>
|
|
3559
|
+
<success />
|
|
3560
|
+
</response>
|
|
3549
3561
|
</server>
|
|
3550
3562
|
)
|
|
3551
3563
|
```
|
|
@@ -3564,16 +3576,14 @@ Note the [cookie storage model specification](https://datatracker.ietf.org/doc/h
|
|
|
3564
3576
|
```typescript jsx
|
|
3565
3577
|
export default (
|
|
3566
3578
|
<server>
|
|
3567
|
-
<
|
|
3568
|
-
<
|
|
3569
|
-
|
|
3570
|
-
|
|
3571
|
-
|
|
3572
|
-
|
|
3573
|
-
|
|
3574
|
-
|
|
3575
|
-
</fallback>
|
|
3576
|
-
</api>
|
|
3579
|
+
<response>
|
|
3580
|
+
<cookie
|
|
3581
|
+
expires={new Date('2050-01-01')}
|
|
3582
|
+
key='token'
|
|
3583
|
+
value='...'
|
|
3584
|
+
/>
|
|
3585
|
+
<success />
|
|
3586
|
+
</response>
|
|
3577
3587
|
</server>
|
|
3578
3588
|
)
|
|
3579
3589
|
```
|
|
@@ -3587,16 +3597,14 @@ Note be careful when setting this to true, as compliant clients will not allow c
|
|
|
3587
3597
|
```typescript jsx
|
|
3588
3598
|
export default (
|
|
3589
3599
|
<server>
|
|
3590
|
-
<
|
|
3591
|
-
<
|
|
3592
|
-
|
|
3593
|
-
|
|
3594
|
-
|
|
3595
|
-
|
|
3596
|
-
|
|
3597
|
-
|
|
3598
|
-
</fallback>
|
|
3599
|
-
</api>
|
|
3600
|
+
<response>
|
|
3601
|
+
<cookie
|
|
3602
|
+
httpOnly
|
|
3603
|
+
key='token'
|
|
3604
|
+
value='...'
|
|
3605
|
+
/>
|
|
3606
|
+
<success />
|
|
3607
|
+
</response>
|
|
3600
3608
|
</server>
|
|
3601
3609
|
)
|
|
3602
3610
|
```
|
|
@@ -3610,17 +3618,15 @@ Note the [cookie storage model specification](https://datatracker.ietf.org/doc/h
|
|
|
3610
3618
|
```typescript jsx
|
|
3611
3619
|
export default (
|
|
3612
3620
|
<server>
|
|
3613
|
-
<
|
|
3614
|
-
<
|
|
3615
|
-
|
|
3616
|
-
|
|
3617
|
-
|
|
3618
|
-
|
|
3619
|
-
|
|
3620
|
-
|
|
3621
|
-
|
|
3622
|
-
</fallback>
|
|
3623
|
-
</api>
|
|
3621
|
+
<response>
|
|
3622
|
+
<cookie
|
|
3623
|
+
httpOnly
|
|
3624
|
+
maxAge={9999}
|
|
3625
|
+
key='token'
|
|
3626
|
+
value='...'
|
|
3627
|
+
/>
|
|
3628
|
+
<success />
|
|
3629
|
+
</response>
|
|
3624
3630
|
</server>
|
|
3625
3631
|
)
|
|
3626
3632
|
```
|
|
@@ -3634,18 +3640,16 @@ By default, the path is considered the “default path”.
|
|
|
3634
3640
|
```typescript jsx
|
|
3635
3641
|
export default (
|
|
3636
3642
|
<server>
|
|
3637
|
-
<
|
|
3638
|
-
<
|
|
3639
|
-
|
|
3640
|
-
|
|
3641
|
-
|
|
3642
|
-
|
|
3643
|
-
|
|
3644
|
-
|
|
3645
|
-
|
|
3646
|
-
|
|
3647
|
-
</fallback>
|
|
3648
|
-
</api>
|
|
3643
|
+
<response>
|
|
3644
|
+
<cookie
|
|
3645
|
+
httpOnly
|
|
3646
|
+
maxAge={9999}
|
|
3647
|
+
path='/src'
|
|
3648
|
+
key='token'
|
|
3649
|
+
value='...'
|
|
3650
|
+
/>
|
|
3651
|
+
<success />
|
|
3652
|
+
</response>
|
|
3649
3653
|
</server>
|
|
3650
3654
|
)
|
|
3651
3655
|
```
|
|
@@ -3664,18 +3668,16 @@ note This is an attribute that has not yet been fully standardized, and may chan
|
|
|
3664
3668
|
```typescript jsx
|
|
3665
3669
|
export default (
|
|
3666
3670
|
<server>
|
|
3667
|
-
<
|
|
3668
|
-
<
|
|
3669
|
-
|
|
3670
|
-
|
|
3671
|
-
|
|
3672
|
-
|
|
3673
|
-
|
|
3674
|
-
|
|
3675
|
-
|
|
3676
|
-
|
|
3677
|
-
</fallback>
|
|
3678
|
-
</api>
|
|
3671
|
+
<response>
|
|
3672
|
+
<cookie
|
|
3673
|
+
httpOnly
|
|
3674
|
+
priority='high'
|
|
3675
|
+
path='/src'
|
|
3676
|
+
key='token'
|
|
3677
|
+
value='...'
|
|
3678
|
+
/>
|
|
3679
|
+
<success />
|
|
3680
|
+
</response>
|
|
3679
3681
|
</server>
|
|
3680
3682
|
)
|
|
3681
3683
|
```
|
|
@@ -3697,19 +3699,17 @@ This also means many clients may ignore this attribute until they understand it.
|
|
|
3697
3699
|
```typescript jsx
|
|
3698
3700
|
export default (
|
|
3699
3701
|
<server>
|
|
3700
|
-
<
|
|
3701
|
-
<
|
|
3702
|
-
|
|
3703
|
-
|
|
3704
|
-
|
|
3705
|
-
|
|
3706
|
-
|
|
3707
|
-
|
|
3708
|
-
|
|
3709
|
-
|
|
3710
|
-
|
|
3711
|
-
</fallback>
|
|
3712
|
-
</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>
|
|
3713
3713
|
</server>
|
|
3714
3714
|
)
|
|
3715
3715
|
```
|
|
@@ -3726,17 +3726,15 @@ Note be careful when setting this to true, as compliant clients will not send th
|
|
|
3726
3726
|
```typescript jsx
|
|
3727
3727
|
export default (
|
|
3728
3728
|
<server>
|
|
3729
|
-
<
|
|
3730
|
-
<
|
|
3731
|
-
|
|
3732
|
-
|
|
3733
|
-
|
|
3734
|
-
|
|
3735
|
-
|
|
3736
|
-
|
|
3737
|
-
|
|
3738
|
-
</fallback>
|
|
3739
|
-
</api>
|
|
3729
|
+
<response>
|
|
3730
|
+
<cookie
|
|
3731
|
+
httpOnly
|
|
3732
|
+
secure
|
|
3733
|
+
key='token'
|
|
3734
|
+
value='...'
|
|
3735
|
+
/>
|
|
3736
|
+
<success />
|
|
3737
|
+
</response>
|
|
3740
3738
|
</server>
|
|
3741
3739
|
)
|
|
3742
3740
|
```
|
|
@@ -3769,14 +3767,12 @@ import { SetToken } from './SetToken'
|
|
|
3769
3767
|
|
|
3770
3768
|
export default (
|
|
3771
3769
|
<server>
|
|
3772
|
-
<
|
|
3773
|
-
<
|
|
3774
|
-
|
|
3775
|
-
|
|
3776
|
-
|
|
3777
|
-
|
|
3778
|
-
</fallback>
|
|
3779
|
-
</api>
|
|
3770
|
+
<response>
|
|
3771
|
+
<SetToken
|
|
3772
|
+
value='...'
|
|
3773
|
+
/>
|
|
3774
|
+
<success />
|
|
3775
|
+
</response>
|
|
3780
3776
|
</server>
|
|
3781
3777
|
)
|
|
3782
3778
|
```
|
|
@@ -3801,7 +3797,7 @@ Real-time
|
|
|
3801
3797
|
[useClientIp](#useclientip)
|
|
3802
3798
|
|
|
3803
3799
|
Server start
|
|
3804
|
-
[
|
|
3800
|
+
[useServerPlugin](#useserverplugin)
|
|
3805
3801
|
|
|
3806
3802
|
Both
|
|
3807
3803
|
[useServer](#useserver)
|
|
@@ -3813,7 +3809,7 @@ Both
|
|
|
3813
3809
|
|
|
3814
3810
|
[← back](#hooks)
|
|
3815
3811
|
|
|
3816
|
-
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).
|
|
3817
3813
|
This hook returns current request instance.
|
|
3818
3814
|
|
|
3819
3815
|
*src/Component.tsx*
|
|
@@ -3834,7 +3830,7 @@ export function Component () {
|
|
|
3834
3830
|
|
|
3835
3831
|
[← back](#hooks)
|
|
3836
3832
|
|
|
3837
|
-
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).
|
|
3838
3834
|
This hook returns current response instance.
|
|
3839
3835
|
|
|
3840
3836
|
*src/Component.tsx*
|
|
@@ -3855,7 +3851,7 @@ export function Component () {
|
|
|
3855
3851
|
|
|
3856
3852
|
[← back](#hooks)
|
|
3857
3853
|
|
|
3858
|
-
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).
|
|
3859
3855
|
This hook returns current request headers object.
|
|
3860
3856
|
|
|
3861
3857
|
*src/Component.tsx*
|
|
@@ -3874,7 +3870,7 @@ export function Component () {
|
|
|
3874
3870
|
|
|
3875
3871
|
[← back](#hooks)
|
|
3876
3872
|
|
|
3877
|
-
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).
|
|
3878
3874
|
This hook returns current request cookies object.
|
|
3879
3875
|
|
|
3880
3876
|
*src/Component.tsx*
|
|
@@ -3893,7 +3889,7 @@ export function Component () {
|
|
|
3893
3889
|
|
|
3894
3890
|
[← back](#hooks)
|
|
3895
3891
|
|
|
3896
|
-
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).
|
|
3897
3893
|
This hook returns current request URL path as a `string`.
|
|
3898
3894
|
|
|
3899
3895
|
*src/Component.tsx*
|
|
@@ -3912,7 +3908,7 @@ export function Component () {
|
|
|
3912
3908
|
|
|
3913
3909
|
[← back](#hooks)
|
|
3914
3910
|
|
|
3915
|
-
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).
|
|
3916
3912
|
This hook returns an object of URL params you set by [\<param>](#param).
|
|
3917
3913
|
|
|
3918
3914
|
*src/Component.tsx*
|
|
@@ -3930,7 +3926,7 @@ export function Component () {
|
|
|
3930
3926
|
|
|
3931
3927
|
[← back](#hooks)
|
|
3932
3928
|
|
|
3933
|
-
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).
|
|
3934
3930
|
This hook returns an object of URL query params.
|
|
3935
3931
|
|
|
3936
3932
|
*src/Component.tsx*
|
|
@@ -3948,7 +3944,7 @@ export function Component () {
|
|
|
3948
3944
|
|
|
3949
3945
|
[← back](#hooks)
|
|
3950
3946
|
|
|
3951
|
-
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).
|
|
3952
3948
|
This hook returns current request body.
|
|
3953
3949
|
|
|
3954
3950
|
*src/Component.tsx*
|
|
@@ -3967,7 +3963,7 @@ export function Component () {
|
|
|
3967
3963
|
[← back](#hooks)
|
|
3968
3964
|
|
|
3969
3965
|
This hook returns request user IP.
|
|
3970
|
-
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).
|
|
3971
3967
|
|
|
3972
3968
|
*src/Component.tsx*
|
|
3973
3969
|
```typescript jsx
|
|
@@ -3980,7 +3976,7 @@ export function Component () {
|
|
|
3980
3976
|
}
|
|
3981
3977
|
```
|
|
3982
3978
|
|
|
3983
|
-
###
|
|
3979
|
+
### useServerPlugin
|
|
3984
3980
|
|
|
3985
3981
|
[← back](#hooks)
|
|
3986
3982
|
|
|
@@ -3988,25 +3984,24 @@ This hook adds a request plugin function.
|
|
|
3988
3984
|
The function runs before check endpoints.
|
|
3989
3985
|
If the function returns `true` the request handling stops, and you get full control over the request.
|
|
3990
3986
|
|
|
3991
|
-
This hook MUST be used in a component placed in [\<
|
|
3987
|
+
This hook MUST be used in a component placed in [\<server>](#server).
|
|
3992
3988
|
|
|
3993
3989
|
*src/SecretEndpoint.tsx*
|
|
3994
3990
|
```typescript jsx
|
|
3995
|
-
import { useRequestPlugin } from '@innet/sever'
|
|
3991
|
+
import { useRequestPlugin, useAction } from '@innet/sever'
|
|
3996
3992
|
|
|
3997
3993
|
export function SecretEndpoint () {
|
|
3998
|
-
|
|
3999
|
-
|
|
4000
|
-
|
|
4001
|
-
|
|
4002
|
-
|
|
4003
|
-
return true
|
|
3994
|
+
useServerPlugin(() => {
|
|
3995
|
+
const action = useAction()
|
|
3996
|
+
|
|
3997
|
+
if (action.path.startsWith('/secret-endpoint')) {
|
|
3998
|
+
return <success>A secret message</success>
|
|
4004
3999
|
}
|
|
4005
4000
|
})
|
|
4006
4001
|
}
|
|
4007
4002
|
```
|
|
4008
4003
|
|
|
4009
|
-
Then use the plugin in [\<api>](#api).
|
|
4004
|
+
Then use the plugin in [\<server>](#server) or [\<api>](#api).
|
|
4010
4005
|
|
|
4011
4006
|
*src/app.tsx*
|
|
4012
4007
|
```typescript jsx
|
|
@@ -4014,12 +4009,10 @@ import { SecretEndpoint } from './SecretEndpoint'
|
|
|
4014
4009
|
|
|
4015
4010
|
export default (
|
|
4016
4011
|
<server>
|
|
4017
|
-
<
|
|
4018
|
-
|
|
4019
|
-
|
|
4020
|
-
|
|
4021
|
-
<SecretEndpoint />
|
|
4022
|
-
</api>
|
|
4012
|
+
<SecretEndpoint />
|
|
4013
|
+
<response>
|
|
4014
|
+
<error />
|
|
4015
|
+
</response>
|
|
4023
4016
|
</server>
|
|
4024
4017
|
)
|
|
4025
4018
|
```
|