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/dog
的 http-post
应该导致 dog
资源和 cat
中的 /animal/cat
。 http-post
当然可以使用相同的 JSON。
对于 http-get
,请求的资源可能是 /animals
,其中包含资源 /animal/cats
(所有 /animal/cat
的列表)和 /animal/dogs
的组合列表(所有 /animal/dog
的列表)
如果你沿着你在问题中提到的路径走下去,你可以把所有东西都扔到 /stuff
就像猫,狗,三轮车,合同,space 船......不是很 restful.
我有 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/dog
的 http-post
应该导致 dog
资源和 cat
中的 /animal/cat
。 http-post
当然可以使用相同的 JSON。
对于 http-get
,请求的资源可能是 /animals
,其中包含资源 /animal/cats
(所有 /animal/cat
的列表)和 /animal/dogs
的组合列表(所有 /animal/dog
的列表)
如果你沿着你在问题中提到的路径走下去,你可以把所有东西都扔到 /stuff
就像猫,狗,三轮车,合同,space 船......不是很 restful.