gpt4 book ai didi

使用 Mime 类型的 Rest 版本控制 - */* 的默认版本

转载 作者:行者123 更新时间:2023-12-02 03:40:52 25 4
gpt4 key购买 nike

我已经通过定义供应商 mime 类型使用 CXF 在我的 REST 服务上实现了版本控制,该类型在传递正确的接受 header 时可以正常工作。

但是,当客户端不传递接受 header 但传递 asterix/asterix 时,我的服务默认返回服务的第一个版本。

好的,这是正确的,因为客户已指定他们接受任何内容,但我希望它默认为第二个最新版本的服务。

有没有办法指定此服务是在这种情况下应使用的默认服务?

谢谢

服务一注释:

@GET
@Path("/")
@Produces(value = {CustomMediaType.APPLICATION_CUSTOM_MEDIATYPE_JSON_V1})

服务二注解:

@GET
@Path("/")
@Produces(value = {MediaType.APPLICATION_JSON,CustomMediaType.APPLICATION_CUSTOM_MEDIATYPE_JSON_V2})

最佳答案

下面的解决方案只适用于同时维护 2 个版本:

删除旧版本 (v1) 的@Produces。

这将强制在 v1 上使用通配符,(因此)与 v2 中的@Produce 相比不那么具体

  • 没有 MediaType,调度程序将选择最具体的方法(因此,版本 2)。
  • 对于 MediaType 版本 1,唯一的匹配项是通配符 => getObjectV1。
  • 对于 MediaType 版本 2,有两个匹配项(v1 和 v2),但 v2 更具体 => getObjectV2

    @GET
    @Path("/")
    public Object getObjectV1(){
    }

    @GET
    @Path("/")
    @Produces(value ={CustomMediaType.APPLICATION_CUSTOM_MEDIATYPE_JSON_V2})
    public Object getObjectV2(){
    }

http://bill.burkecentral.com/2013/05/29/the-poor-jax-rs-request-dispatching-algorithm/

关于使用 Mime 类型的 Rest 版本控制 - */* 的默认版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20187781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com