RESTFul 服务器中的多态性

Polymorphism in RESTFul server

我有 3 个 class。 A 是抽象的 class,B 和 C 扩展了 A。 我希望能够在 POST (A) 中获得 JSON,然后确定它是什么类型并转换为正确的类型。换句话说,B 和 C 都只使用一个端点。我想在 GET 中做同样的事情,我想得到一个包含 B 和 C 对象的列表。 可能吗?

是的,有可能,您想要的是能够处理多态类型。 有很多框架可以帮助你,我个人使用jackson 2,你可以在这里查看示例:

https://github.com/FasterXML/jackson-annotations#handling-polymorphic-types

A、B、C 通常都有名字,比如 Animal、Dog 和 Cat。 因此,这些是不同的资源,如 /animal/animal/dog/animal/cat。遵循此规则,您可以通过 requestUrl 确定类型。 /animal/doghttp-post 应该导致 dog 资源和 cat 中的 /animal/cathttp-post 当然可以使用相同的 JSON。

对于 http-get,请求的资源可能是 /animals,其中包含资源 /animal/cats(所有 /animal/cat 的列表)和 /animal/dogs 的组合列表(所有 /animal/dog 的列表)

如果你沿着你在问题中提到的路径走下去,你可以把所有东西都扔到 /stuff 就像猫,狗,三轮车,合同,space 船......不是很 restful.