tegg
tegg copied to clipboard
[Feature Request] 提供更加简单化请求方法的修饰器
现在的HTTPMethod 虽然足够满足业务需求,但是不够简练,是否能提供 常用的 Get,Post等方法的修饰器
@Controller('/')
export class HomeController {
@Get('/')
async home() {
return 'Hello tegg!';
}
}
顺带补充,能否提供修改全局route的前缀 ,类似于在配置文件提供
export default config={
tegg:{
root:"/hello"
}
}
@Cyberhan123 可以先提个 RFC 说说自己想要的注解是什么样的。
@Cyberhan123可以先提个RFC告诉自己想要的注解的。
我会在稍后整理出一个PR
@killagu 如果你认为这个 https://github.com/eggjs/tegg/pull/19 可行我会补充测试用例和相关文档
@Cyberhan123 参数是不是可以更简单,比如只有 @Get()
这样?其他所有参数都是可选的
@Cyberhan123 参数是不是可以更简单,比如只有
@Get()
这样?其他所有参数都是可选的
是可以的,我修改了一下。麻烦帮忙review一下看看是不是合理
如果默认值都是 /
的话,这个默认值就没什么意义了。使用的地方都需要设置 path
如果默认值都是
/
的话,这个默认值就没什么意义了。使用的地方都需要设置 path
请教一下,如果按照nest的实现我测试时候是如果请求 http://localhost:3000/
只能命中第一个hander?
@Controller()
class A{
@Get()
function GetA(){
}
@Get()
function GetB(){
}
}
而你的想法是否是:如果没有可选参数,可以通过函数名来匹配;
即在上面的情况下,如果是GetA那么可以通过http://localhost:3000/GetA
来进行请求;
如果是的话,是否要指定,当成员函数名为Index,或者Home的时候将其匹配到/
?
如果要是存在@Get('/')
那么这个函数的优先级相比Home或者Index应该要高?
HTTP 接口会有不同的风格,比如说 RPC 类型、REST 类型。
可以分两套 api 出来,比如说。
RPC:
import { Controller, POST } from '@eggjs/tegg/http/rpc'
@Controller('/api/v1')
class Hello {
// POST /api/v1/helloWorld
@POST()
helloWorld()
}
REST:
import { Controller, Create, List, Get } from '@eggjs/tegg/http/rest'
@Controller('/api/v1/fruits')
class Fruit {
// POST /api/v1/helloWorld
@Create()
create() {}
@List()
list() {}
@Get()
get(id) {}
}
个人感觉如果通过包后缀区分不会很清晰,我们是不是应该直接通过Controller区分?就比如普通的Controller,Rest风格的RestController,支持RPC协议的 RPCController,那Rest风格的httpMethod注解应该有哪些估计还需要调研,RPC这里感觉也还有不少问题
是的。我们需要一个更完善的 rfc 详细的描述下不同风格的 controller 注解。
namespace + controller 可以配合再一起使用。比如说 import { RestController } from '@eggjs/tegg/rest'
。通过 namespace 来区分的原因是,每个风格下的注解可能很多,会导致 @eggjs/tegg
这个 namespace 下太多了。