我正在使用超媒体概念设计API。我看到这是一个很好的做法,有一个根路由返回其他API链接进行导航。
例如:我向 http://myapi.com 提出了请求,并返回
{
links: [
{ 'rel': 'profile', href: '/profile' },
{ 'rel': 'orders', href: '/orders' },
{ 'rel': 'order_types', href: '/order_types' },
...
]
}
但是,通过这种方式,如果根有20个资源,它将非常大。
那么,直接请求 order_types 而不是请求root,然后请求order_types是反模式?
答案 0 :(得分:1)
这是一个难以回答的问题,因为我想到的第一件事是:它实际上是那么大吗?
现在,例如,每个链接大约需要40个字节。对于20个资源,即800字节。 gzip响应(或brotli,如果你可以支持它),你可以使这个更小。如果您的总文件有一些开销(比如另外200个字节)并且我们假设为1KB,那么像gzip这样的东西你可能会把它减少到400字节或更小。
您可以在此文件上设置缓存标题,以便只在蓝色月亮中请求一次。
现在你的主要问题是什么?这是一种反模式吗?我会说是的,你应该只有一个带书签的网址。
答案 1 :(得分:1)
由于我目前在大规模的HATEOAS样式REST API下遭受了很多苦难,从我的角度来看,请帮助自己并将所有链接(方法)放在起始页面上。
您真的不想按照几个链接来查找要使用(或测试)的方法。当然你可以使用直接路径,但是再次它只是RPC风格。
而且我很遗憾地说,HATEOAS的整个概念虽然听起来并不好恕我直言,但在实施和测试方面真的很痛苦。