在java .javadsl.api. descriptor中,restcall,pathcall,namedcall是



我是微服务和Lagom框架的新手,在我们制作servicecall的服务api中,我不理解 namedcall pathcall restcall 的区别。我们应该在何时何地使用哪个?

,例如:

  ServiceCall<NotUsed, Cargo, Done> register();
  restCall(Method.POST, "/api/registration", register()
  ServiceCall<NotUsed, NotUsed, Source<Cargo, ?>> getLiveRegistrations();
  pathCall("/api/registration/live", getLiveRegistrations())
  ServiceCall<User, NotUsed> createUser();
  namedCall("/api/users", this::createUser)

Lagom文档很好地介绍了它:

    名为<<li>/gh>

标识符的最简单类型是名称,默认情况下,该名称被设置为与实现它的接口上的方法名称相同的名称。还可以通过将自定义名称传递给namedCall方法来提供:

default Descriptor descriptor() {
    return named("hello").withCalls(
        namedCall("hello", this::sayHello)
    );
}

在本例中,我们将其命名为hello,而不是默认的sayHello。当使用REST实现时,这意味着该调用将具有/hello.

的路径。
径>

第二种标识符是基于路径的标识符。它使用URI路径和查询字符串来路由调用,并且可以从中抽取动态路径参数。它们可以使用pathCall方法进行配置。

通过在路径中声明动态部分,从路径中提取动态路径参数。以冒号为前缀,例如,/order/:id的路径有一个动态部分称为id。Lagom将从路径中提取此参数,并将其传递给服务调用方法。

ServiceCall<NotUsed, Order> getOrder(long id);
default Descriptor descriptor() {
    return named("orders").withCalls(
        pathCall("/order/:id", this::getOrder)
    );
}

当然可以提取多个参数,这些参数将按照从URL中提取的顺序传递给您的服务调用方法:

  • Rest调用
  • 标识符的最后一个类型是REST标识符。REST标识符被设计为在创建语义REST api时使用。它们既使用基于路径的标识符的路径,也使用请求方法来标识它们。它们可以使用restCall方法配置:

    ServiceCall<Item, NotUsed> addItem(long orderId);
    ServiceCall<NotUsed, Item> getItem(long orderId, String itemId);
    ServiceCall<NotUsed, NotUsed> deleteItem(long orderId, String itemId);
    default Descriptor descriptor() {
    return named("orders").withCalls(
            restCall(Method.POST,   "/order/:orderId/item",         this::addItem),
            restCall(Method.GET,    "/order/:orderId/item/:itemId", this::getItem),
            restCall(Method.DELETE, "/order/:orderId/item/:itemId", this::deleteItem)
    );
    }
    

    相关内容

    • 没有找到相关文章

    最新更新