UNPKG

@nestjs/common

Version:

Nest - modern, fast, powerful node.js web framework (@common)

162 lines (161 loc) 5.23 kB
import { METHOD_METADATA, PATH_METADATA } from '../../constants.js'; import { RequestMethod } from '../../enums/request-method.enum.js'; const defaultMetadata = { [PATH_METADATA]: '/', [METHOD_METADATA]: RequestMethod.GET, }; export const RequestMapping = (metadata = defaultMetadata) => { const pathMetadata = metadata[PATH_METADATA]; const path = pathMetadata && pathMetadata.length ? pathMetadata : '/'; const requestMethod = metadata[METHOD_METADATA] || RequestMethod.GET; return (target, key, descriptor) => { Reflect.defineMetadata(PATH_METADATA, path, descriptor.value); Reflect.defineMetadata(METHOD_METADATA, requestMethod, descriptor.value); return descriptor; }; }; const createMappingDecorator = (method) => (path) => { return RequestMapping({ [PATH_METADATA]: path, [METHOD_METADATA]: method, }); }; /** * Route handler (method) Decorator. Routes HTTP POST requests to the specified path. * * @see [Routing](https://docs.nestjs.com/controllers#routing) * * @publicApi */ export const Post = createMappingDecorator(RequestMethod.POST); /** * Route handler (method) Decorator. Routes HTTP GET requests to the specified path. * * @see [Routing](https://docs.nestjs.com/controllers#routing) * * @publicApi */ export const Get = createMappingDecorator(RequestMethod.GET); /** * Route handler (method) Decorator. Routes HTTP DELETE requests to the specified path. * * @see [Routing](https://docs.nestjs.com/controllers#routing) * * @publicApi */ export const Delete = createMappingDecorator(RequestMethod.DELETE); /** * Route handler (method) Decorator. Routes HTTP PUT requests to the specified path. * * @see [Routing](https://docs.nestjs.com/controllers#routing) * * @publicApi */ export const Put = createMappingDecorator(RequestMethod.PUT); /** * Route handler (method) Decorator. Routes HTTP PATCH requests to the specified path. * * @see [Routing](https://docs.nestjs.com/controllers#routing) * * @publicApi */ export const Patch = createMappingDecorator(RequestMethod.PATCH); /** * Route handler (method) Decorator. Routes HTTP OPTIONS requests to the specified path. * * @see [Routing](https://docs.nestjs.com/controllers#routing) * * @publicApi */ export const Options = createMappingDecorator(RequestMethod.OPTIONS); /** * Route handler (method) Decorator. Routes HTTP HEAD requests to the specified path. * * @see [Routing](https://docs.nestjs.com/controllers#routing) * * @publicApi */ export const Head = createMappingDecorator(RequestMethod.HEAD); /** * Route handler (method) Decorator. Routes all HTTP requests to the specified path. * * @see [Routing](https://docs.nestjs.com/controllers#routing) * * @publicApi */ export const All = createMappingDecorator(RequestMethod.ALL); /** * Route handler (method) Decorator. Routes HTTP SEARCH requests to the specified path. * * @see [Routing](https://docs.nestjs.com/controllers#routing) * * @publicApi */ export const Search = createMappingDecorator(RequestMethod.SEARCH); /** * Route handler (method) Decorator. Routes HTTP QUERY requests to the specified path. * * **Note**: this is named `QueryMethod` (rather than `Query`) to avoid a name clash * with the `@Query()` parameter decorator used to extract query-string params. * * @see [Routing](https://docs.nestjs.com/controllers#routing) * * @publicApi */ export const QueryMethod = createMappingDecorator(RequestMethod.QUERY); /** * Route handler (method) Decorator. Routes Webdav PROPFIND requests to the specified path. * * @see [Routing](https://docs.nestjs.com/controllers#routing) * * @publicApi */ export const Propfind = createMappingDecorator(RequestMethod.PROPFIND); /** * Route handler (method) Decorator. Routes Webdav PROPPATCH requests to the specified path. * * @see [Routing](https://docs.nestjs.com/controllers#routing) * * @publicApi */ export const Proppatch = createMappingDecorator(RequestMethod.PROPPATCH); /** * Route handler (method) Decorator. Routes Webdav MKCOL requests to the specified path. * * @see [Routing](https://docs.nestjs.com/controllers#routing) * * @publicApi */ export const Mkcol = createMappingDecorator(RequestMethod.MKCOL); /** * Route handler (method) Decorator. Routes Webdav COPY requests to the specified path. * * @see [Routing](https://docs.nestjs.com/controllers#routing) * * @publicApi */ export const Copy = createMappingDecorator(RequestMethod.COPY); /** * Route handler (method) Decorator. Routes Webdav MOVE requests to the specified path. * * @see [Routing](https://docs.nestjs.com/controllers#routing) * * @publicApi */ export const Move = createMappingDecorator(RequestMethod.MOVE); /** * Route handler (method) Decorator. Routes Webdav LOCK requests to the specified path. * * @see [Routing](https://docs.nestjs.com/controllers#routing) * * @publicApi */ export const Lock = createMappingDecorator(RequestMethod.LOCK); /** * Route handler (method) Decorator. Routes Webdav UNLOCK requests to the specified path. * * @see [Routing](https://docs.nestjs.com/controllers#routing) * * @publicApi */ export const Unlock = createMappingDecorator(RequestMethod.UNLOCK);