为了账号安全,请及时绑定邮箱和手机立即绑定

使用 laggom 创建一个简单的模拟 json 服务

使用 laggom 创建一个简单的模拟 json 服务

慕哥6287543 2022-10-12 15:25:22
Lagom 似乎很有趣,但我很难让事情变得简单。好像没看懂怎么用和hello world的例子,虽然可以用,但是不明白怎么用。我正在尝试创建一个简单的 restful 服务,该服务在其标头中接受两个参数并生成一个 json 对象。例如在 MyService.java 我有:public interface BookService extends Service {    ServiceCall<NotUsed, String> getAllBook();    /**     * @return     */    @Override    default Descriptor descriptor() {        return named("book").withCalls(            restCall(GET, "/api/get-all-book", this::getAllBook)        ).withAutoAcl(true);    }}然后在 BookServiceImpl 我有:public class BookServiceImpl implements BookService {    private final PersistentEntityRegistry persistentEntityRegistry;    /**     * @param registry     * @param readSide     * @param session     */    @Inject    public BookServiceImpl(final PersistentEntityRegistry registry, ReadSide readSide, CassandraSession session) {        this.persistentEntityRegistry = registry;        persistentEntityRegistry.register(BookEntity.class);        readSide.register(BookEventProcessor.class);    }    @Override    public ServiceCall<NotUsed, String> getAllBook() {        return request -> {            JSONObject myBook= new JSONObject();            myBook.put("name","BookName");            myBook.put("description","A description");            myBook.put("price","$16");            myBook.put("status","available");            //how do I return JSONBject.toString()        };    }}然后我如何放置标题参数?一些解释基础知识的文档将非常有帮助。提前致谢
查看完整描述

1 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

您需要创建一个实际执行 JSON 的 POJO 类。通过在服务实现中使用 lombok 包:


package mybook;



import com.fasterxml.jackson.databind.annotation.JsonDeserialize;

import lombok.AllArgsConstructor;

import lombok.Builder;

import lombok.Value;


import javax.annotation.concurrent.Immutable;


@Value

@Builder

@Immutable

@JsonDeserialize

@AllArgsConstructor

public class Book {

    String name; 

    String description; 

    String value; 

    String status;

}

然后在服务中:


public interface BookService extends Service {


    ServiceCall<NotUsed, Book> getAllBook();


    /**

     * @return

     */

    @Override

    default Descriptor descriptor() {


        return named("book").withCalls(

            restCall(GET, "/api/get-all-book", this::getAllBook)

        ).withAutoAcl(true);

    }

}

然后在实施中:


public class BookServiceImpl implements BookService {


    @Override

    public ServiceCall<NotUsed, Book> getAllBook() {

        return request -> {

            Book myBook =     Book.builder().

                                name("BookName").

                                description("A description").

                                price("16€").

                                status("available").build();


            return completedFuture(myBook);

        };

    }

}


查看完整回答
反对 回复 2022-10-12
  • 1 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号