forked from FoundKeyGang/FoundKey
server: add additional API v2 options to endpoints
* improve type definitions for v2 method The method has to be lowercase because it is used as an index to get the respective method of the router. Co-authored-by: Johann150 <johann.galle@protonmail.com>
This commit is contained in:
parent
9317d25078
commit
4a3b91d658
2 changed files with 23 additions and 0 deletions
|
@ -702,6 +702,24 @@ export interface IEndpointMeta {
|
||||||
* 正常応答をキャッシュ (Cache-Control: public) する秒数
|
* 正常応答をキャッシュ (Cache-Control: public) する秒数
|
||||||
*/
|
*/
|
||||||
readonly cacheSec?: number;
|
readonly cacheSec?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* API v2 options
|
||||||
|
*/
|
||||||
|
readonly v2?: {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* HTTP verb this endpoint supports
|
||||||
|
*/
|
||||||
|
readonly method: 'get' | 'put' | 'post' | 'patch' | 'delete';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Path alias for v2 endpoint
|
||||||
|
*
|
||||||
|
* @example (v0) /api/notes/create -> /api/v2/notes
|
||||||
|
*/
|
||||||
|
readonly alias?: string;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IEndpoint {
|
export interface IEndpoint {
|
||||||
|
|
|
@ -91,6 +91,11 @@ for (const endpoint of endpoints) {
|
||||||
} else {
|
} else {
|
||||||
router.get(`/${endpoint.name}`, async ctx => { ctx.status = 405; });
|
router.get(`/${endpoint.name}`, async ctx => { ctx.status = 405; });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (endpoint.meta.v2) {
|
||||||
|
const path = endpoint.meta.v2.alias ?? endpoint.name.replace(/-/g, '_');
|
||||||
|
router[endpoint.meta.v2.method](`/v2/${path}`, handler.bind(null, endpoint));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue