Closed seho-dev closed 2 years ago
我们在runtime中规定了useApi新的使用姿势:
import { useApi } from '@swordjs/sword-framework';
import { ReqQuery, ReqParams, Res } from './proto';
export default useApi<{
query: ReqQuery;
params: ReqParams;
res: Res;
}>({
handler: async (ctx) => {
return () => {
return {
statusCode: 200,
statusMessage: 'success',
headers: {},
data: {
message: 'Hello, World!'
}
};
};
}
});
runtime会检查你的返回值, 如果是函数, 你在ide中不仅会获得类型提示, 还会返回集成响应, 意味着你不需要任何学习成本, 只需要更改为函数返回值就可以了😄 !
值得注意的是, 在unicloud环境下你的statusMessage将不起作用, 因为unicloud的集成返回没有这个选项, 你可以将message放到data中, 由客户端去处理;
在各个平台, 不管是server还是unicloud等其他环境, 有时我们需要返回指定状态码和返回头, 所以在最新的runtime中定义了一个新的方式, 可以非常简单的返回, 那就是集成响应, 在serverless平台我们同样需要这样的集成响应; 比如unicloud, 其中也有集成响应概念, 因为它不仅是要在app中内部调用, 也需要暴露给公网, 所以在公网(云函数url化)下, 它和server端的表现是一致的.