cadl/packages/rest/README.md

329 строки
7.4 KiB
Markdown
Исходник Постоянная ссылка Обычный вид История

# @typespec/rest
TypeSpec REST protocol binding
## Install
```bash
2023-02-16 01:37:39 +03:00
npm install @typespec/rest
```
## Decorators
### TypeSpec.Rest
- [`@action`](#@action)
- [`@actionSeparator`](#@actionseparator)
- [`@autoRoute`](#@autoroute)
- [`@collectionAction`](#@collectionaction)
- [`@copyResourceKeyParameters`](#@copyresourcekeyparameters)
- [`@createsOrReplacesResource`](#@createsorreplacesresource)
- [`@createsOrUpdatesResource`](#@createsorupdatesresource)
- [`@createsResource`](#@createsresource)
- [`@deletesResource`](#@deletesresource)
- [`@listsResource`](#@listsresource)
- [`@parentResource`](#@parentresource)
- [`@readsResource`](#@readsresource)
- [`@resource`](#@resource)
- [`@segment`](#@segment)
- [`@segmentOf`](#@segmentof)
- [`@updatesResource`](#@updatesresource)
#### `@action`
Specify this operation is an action. (Scoped to a resource item /pets/{petId}/my-action)
```typespec
@TypeSpec.Rest.action(name?: valueof string)
```
##### Target
`Operation`
##### Parameters
| Name | Type | Description |
| ---- | ---------------- | ----------------------------------------------------------------------------- |
| name | `valueof string` | Name of the action. If not specified, the name of the operation will be used. |
#### `@actionSeparator`
Defines the separator string that is inserted before the action name in auto-generated routes for actions.
```typespec
@TypeSpec.Rest.actionSeparator(seperator: valueof "/" | ":" | "/:")
```
##### Target
`Model | ModelProperty | Operation`
##### Parameters
| Name | Type | Description |
| --------- | ---------------------------- | ---------------------------------------------------------------- |
| seperator | `valueof "/" \| ":" \| "/:"` | Seperator seperating the action segment from the rest of the url |
#### `@autoRoute`
This interface or operation should resolve its route automatically. To be used with resource types where the route segments area defined on the models.
```typespec
@TypeSpec.Rest.autoRoute
```
##### Target
`Interface | Operation`
##### Parameters
None
##### Examples
```typespec
@autoRoute
interface Pets {
get(@segment("pets") @path id: string): void; //-> route: /pets/{id}
}
```
#### `@collectionAction`
Specify this operation is a collection action. (Scopped to a resource, /pets/my-action)
```typespec
@TypeSpec.Rest.collectionAction(resourceType: Model, name?: valueof string)
```
##### Target
`Operation`
##### Parameters
| Name | Type | Description |
| ------------ | ---------------- | ----------------------------------------------------------------------------- |
| resourceType | `Model` | Resource marked with |
| name | `valueof string` | Name of the action. If not specified, the name of the operation will be used. |
#### `@copyResourceKeyParameters`
Copy the resource key parameters on the model
```typespec
@TypeSpec.Rest.copyResourceKeyParameters(filter?: valueof string)
```
##### Target
`Model`
##### Parameters
| Name | Type | Description |
| ------ | ---------------- | ------------------------------------- |
| filter | `valueof string` | Filter to exclude certain properties. |
#### `@createsOrReplacesResource`
Specify that this is a CreateOrReplace operation for a given resource.
```typespec
@TypeSpec.Rest.createsOrReplacesResource(resourceType: Model)
```
##### Target
`Operation`
##### Parameters
| Name | Type | Description |
| ------------ | ------- | -------------------- |
| resourceType | `Model` | Resource marked with |
#### `@createsOrUpdatesResource`
Specify that this is a CreatesOrUpdate operation for a given resource.
```typespec
@TypeSpec.Rest.createsOrUpdatesResource(resourceType: Model)
```
##### Target
`Operation`
##### Parameters
| Name | Type | Description |
| ------------ | ------- | -------------------- |
| resourceType | `Model` | Resource marked with |
#### `@createsResource`
Specify that this is a Create operation for a given resource.
```typespec
@TypeSpec.Rest.createsResource(resourceType: Model)
```
##### Target
`Operation`
##### Parameters
| Name | Type | Description |
| ------------ | ------- | -------------------- |
| resourceType | `Model` | Resource marked with |
#### `@deletesResource`
Specify that this is a Delete operation for a given resource.
```typespec
@TypeSpec.Rest.deletesResource(resourceType: Model)
```
##### Target
`Operation`
##### Parameters
| Name | Type | Description |
| ------------ | ------- | -------------------- |
| resourceType | `Model` | Resource marked with |
#### `@listsResource`
Specify that this is a List operation for a given resource.
```typespec
@TypeSpec.Rest.listsResource(resourceType: Model)
```
##### Target
`Operation`
##### Parameters
| Name | Type | Description |
| ------------ | ------- | -------------------- |
| resourceType | `Model` | Resource marked with |
#### `@parentResource`
Mark model as a child of the given parent resource.
```typespec
@TypeSpec.Rest.parentResource(parent: Model)
```
##### Target
`Model`
##### Parameters
| Name | Type | Description |
| ------ | ------- | ------------- |
| parent | `Model` | Parent model. |
#### `@readsResource`
Specify that this is a Read operation for a given resource.
```typespec
@TypeSpec.Rest.readsResource(resourceType: Model)
```
##### Target
`Operation`
##### Parameters
| Name | Type | Description |
| ------------ | ------- | -------------------- |
| resourceType | `Model` | Resource marked with |
#### `@resource`
Mark this model as a resource type with a name.
```typespec
@TypeSpec.Rest.resource(collectionName: valueof string)
```
##### Target
`Model`
##### Parameters
| Name | Type | Description |
| -------------- | ---------------- | ---------------------- |
| collectionName | `valueof string` | type's collection name |
#### `@segment`
Defines the preceding path segment for a
```typespec
@TypeSpec.Rest.segment(name: valueof string)
```
##### Target
`Model | ModelProperty | Operation`
##### Parameters
| Name | Type | Description |
| ---- | ---------------- | ---------------------------------------------------------------------------------------------- |
| name | `valueof string` | Segment that will be inserted into the operation route before the path parameter's name field. |
##### Examples
#### `@segmentOf`
Returns the URL segment of a given model if it has `@segment` and `@key` decorator.
```typespec
@TypeSpec.Rest.segmentOf(type: Model)
```
##### Target
`Operation`
##### Parameters
| Name | Type | Description |
| ---- | ------- | ------------ |
| type | `Model` | Target model |
#### `@updatesResource`
Specify that this is a Update operation for a given resource.
```typespec
@TypeSpec.Rest.updatesResource(resourceType: Model)
```
##### Target
`Operation`
##### Parameters
| Name | Type | Description |
| ------------ | ------- | -------------------- |
| resourceType | `Model` | Resource marked with |