gpt4 book ai didi

mule - 在 mule 中实现 REST API 调用 - Jersey 与 Plain-Old-Mule-HTTP

转载 作者:行者123 更新时间:2023-12-04 14:01:29 27 4
gpt4 key购买 nike

我正在尝试确定是否使用 --

  • 带有基于 HTTP 的入站端点的 Jersey (JAX-RS)。
  • 使用基于 HTTP 的入站端点,然后检查 HTTP header 数据(如 http.method、http.query.params、http.query.string 等)以确定 REST 方法。即非基于 Jersey 的自定义方法来实现 REST。

  • 方法#1 的优点
  • 标准:在 Java 中实现休息服务的基于 JAX-RS 标准的方法。
  • 记录很容易:生成文档非常简单,因为有许多工具使用 JAX-RS 注释来生成文档。

  • 方法#1的缺点
  • 如果我们必须在 Mule 中使用 Jersey,那么 Jersey 方法充当有效负载数据的传递。例子-
    @POST
    @Produces(MediaType.APPLICATION_JSON)
    public String create(String jsonPayload) {
    logger.debug("Received and added data :" jasonPayload);
    return jsonPayload;

    }
    在我们的用例中,我们必须将此数据传递给下一个流,在该流中,它要么插入数据库,要么转发到其他 Web 服务。我们不想在这个类中注入(inject)特定于 mule 的代码来从 create 方法中调用其他 Mule 流。我们别无选择,只能将有效负载从该方法中传递出来并在 mule 流中处理。
  • 在 Jersey 处理 create 方法后,它会创建一个 回复 封装有效负载的对象。如果我们想对有效负载做一些事情,那么我们必须首先从响应对象中提取有效负载。这是不必要的麻烦。

  • 有什么建议、意见、想法吗?

    最佳答案

    根据大卫的反馈。以下是我的实现方式——

    REST 类是 TestAPI --

    @Path("/test")
    public class TestAPI {
    private DBOperations dbo;

    @POST
    @Produces(MediaType.APPLICATION_JSON)
    public String create(String jsonPayload) {
    System.out.println("Received and added global attribute :"
    + jsonPayload);
    dbo.create(jsonPayload);
    return jsonPayload;
    }

    这是界面——
    public interface DBOperations {

    public String create(String json);
    public String read(String json);
    public String update(String json);
    public String delete(String json);

    }

    这是 mule 流程,它显示了 DBOperations 的每个方法如何映射到 mule 配置中的不同流程。
    <flow name="jersey-rest-flow" doc:name="jersey-rest-flow">
    <http:inbound-endpoint exchange-pattern="request-response"
    host="localhost" port="8100" doc:name="HTTP" />
    <logger message="Message Received - #[payload]" level="INFO"
    doc:name="Logger" />
    <jersey:resources doc:name="REST">
    <component class="com.test.rest.TestAPI">
    <binding interface="com.test.DBOperations"
    method="create">
    <vm:outbound-endpoint exchange-pattern="request-response"
    path="create-data-vm" />
    </binding>
    <binding interface="com.test.DBOperations"
    method="read">
    <vm:outbound-endpoint exchange-pattern="request-response"
    path="read-data-vm" />
    </binding>
    <binding interface="com.test.DBOperations"
    method="update">
    <vm:outbound-endpoint exchange-pattern="request-response"
    path="update-data-vm" />
    </binding>
    <binding interface="com.test.DBOperations"
    method="delete">
    <vm:outbound-endpoint exchange-pattern="request-response"
    path="delete-data-vm" />
    </binding>
    </component>
    </jersey:resources>
    </flow>

    关于mule - 在 mule 中实现 REST API 调用 - Jersey 与 Plain-Old-Mule-HTTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19368421/

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