|
6 | 6 |
|
7 | 7 | This library is inspired by the HTTP interface in Spring 6 and provides a similar API for Nest.js.
|
8 | 8 |
|
| 9 | +## Features |
| 10 | + |
| 11 | +- Provides a simplified and declarative way of creating HTTP services. |
| 12 | +- Provides a concise syntax for handling query parameters, path variables, request headers, request bodies, and forms. |
| 13 | +- Offers integration with [class-transformer](https://github.com/typestack/class-transformer) to facilitate data transformation. |
| 14 | +- Uses promises instead of observables |
| 15 | + |
9 | 16 | ## Requirements
|
10 | 17 |
|
11 | 18 | - Node.js 18 or later (because this library uses `fetch` internally)
|
@@ -65,63 +72,23 @@ export class AppModule {
|
65 | 72 |
|
66 | 73 | ## Decorators
|
67 | 74 |
|
68 |
| -- `@HttpInterface()` |
69 |
| - |
70 |
| -This decorator is used to mark the class as an HTTP service. |
71 |
| - |
72 |
| -- `@{HTTP Method}Exchange(path: string)` |
73 |
| - |
74 |
| -These decorators are used to mark the method as an HTTP request method. |
75 |
| -`path` is the path or full URL of the request. |
76 |
| - |
77 |
| -- `@ResponseBody(dto: ClassConstructor, options?: ClassTransformOptions)` |
78 |
| - |
79 |
| -This decorator is used to specify the response DTO. |
80 |
| -It requires a class constructor and options from `class-transformer` library. |
81 |
| - |
82 |
| -- `@PathVariable(name?: string)` |
83 |
| - |
84 |
| -This decorator is used to specify the path variable. |
85 |
| -It requires the name of the path variable. |
86 |
| - |
87 |
| -- `@RequestParam(key?: string)` |
88 |
| - |
89 |
| -This decorator is used to specify the query string parameter. |
90 |
| -It requires the key of query string parameter. |
91 |
| -If `key` is not specified, it requires the parameter to be an object. |
92 |
| - |
93 |
| -```ts |
94 |
| -// with key |
95 |
| -class TestService { |
96 |
| - request(@RequestParam('foo') query: string): string { |
97 |
| - return imitation(); |
98 |
| - } |
99 |
| -} |
100 |
| - |
101 |
| -// without key |
102 |
| -class TestService { |
103 |
| - request(@RequestParam() query: { foo: string }): string { |
104 |
| - return imitation(); |
105 |
| - } |
106 |
| -} |
107 |
| -``` |
108 |
| - |
109 |
| -- `@RequestHeader(key?: string)` |
110 |
| - |
111 |
| -This decorator is used to specify the request header. |
112 |
| -It requires the key of request header optionally. |
113 |
| - |
114 |
| -- `@RequestBody(key?: string)` |
| 75 | +- `@HttpInterface()`: Marks the class as an HTTP service. |
| 76 | + |
| 77 | +- `@{HTTP Method}Exchange(path: string)`: Marks the method as an HTTP request method, with `path` being the request's path or full URL. |
| 78 | + |
| 79 | +- `@ResponseBody(dto: ClassConstructor, options?: ClassTransformOptions)`: Specifies the response DTO using a class constructor and options from the `class-transformer` library. |
| 80 | + |
| 81 | +- `@PathVariable(name?: string)`: Specifies the path variable, requiring the name of the variable. |
| 82 | + |
| 83 | +- `@RequestParam(key?: string)`: Specifies the query string parameter, requiring the key of the parameter. If `key` is not specified, the parameter must be an object. See examples below: |
| 84 | + - Example with key: `request(@RequestParam('foo') query: string): string` |
| 85 | + - Example without key: `request(@RequestParam() query: { foo: string }): string` |
115 | 86 |
|
116 |
| -This decorator is used to specify the request body. |
117 |
| -`application/json` is used as the content type. |
118 |
| -It requires the key of request body optionally. |
| 87 | +- `@RequestHeader(key?: string)`: Specifies the request header, requiring the key of the header optionally. |
119 | 88 |
|
120 |
| -- `@RequestForm(key?: string)` |
| 89 | +- `@RequestBody(key?: string)`: Specifies the request body using `application/json` as the content type, requiring the key of the body optionally. |
121 | 90 |
|
122 |
| -This decorator is used to specify the request form. |
123 |
| -`application/x-www-form-urlencoded` is used as the content type. |
124 |
| -It requires the key of request body optionally. |
| 91 | +- `@RequestForm(key?: string)`: Specifies the request form using `application/x-www-form-urlencoded` as the content type, requiring the key of the body optionally. |
125 | 92 |
|
126 | 93 | ## License
|
127 | 94 |
|
|
0 commit comments