Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 关于FE和BE之间api设计的一个问题_Spring_Typescript_Api_Rest_Axios - Fatal编程技术网

Spring 关于FE和BE之间api设计的一个问题

Spring 关于FE和BE之间api设计的一个问题,spring,typescript,api,rest,axios,Spring,Typescript,Api,Rest,Axios,我正在构建一个FE-BE应用程序,我提出了一些关于它们之间api设计的问题 假设我正在开发一个具有两个屏幕的库应用程序: 添加书籍{作者:string,名称:string} 图书馆中图书的显示+所有图书馆中每本书的副本数 城市图书馆 建议如下: 将新书存储在数据库中 向FE发送书籍/书籍列表 调用第三方api以获取城市中所有图书馆中的一本书的副本总数 所以我的两个问题是: a。当FE从BE(GET)获取书籍时,每本书都有id(存储在DB中时获得的id),但当FE创建一本新书并将其传递给BE(PO

我正在构建一个FE-BE应用程序,我提出了一些关于它们之间api设计的问题

假设我正在开发一个具有两个屏幕的库应用程序:

  • 添加书籍{作者:string,名称:string}
  • 图书馆中图书的显示+所有图书馆中每本书的副本数 城市图书馆
  • 建议如下:

  • 将新书存储在数据库中
  • 向FE发送书籍/书籍列表
  • 调用第三方api以获取城市中所有图书馆中的一本书的副本总数
  • 所以我的两个问题是:

    a。当FE从BE(GET)获取书籍时,每本书都有id(存储在DB中时获得的id),但当FE创建一本新书并将其传递给BE(POST)时,它还没有任何id。 那么,在POST请求中传递新书时,我应该在id中输入null,还是应该创建两种对象类型(BookWithId和BookWithoutId)

    b。BE中通过第三方api接收的书籍(在所有城市图书馆中)的副本数量应为book对象中的一个字段,因此可以在GET请求中将其与书籍一起传递给FE,或者FE应通过单独的api向BE请求。使用DTO(数据传输对象)将数据发送给BE,并使用模型类将其持久化到数据库中。使用映射器方法将DTO值映射到模型类,反之亦然。因此,不需要在DTO中包含ID值


    B.从数据库获取books对象(使用model类),将其映射到DTO,从第三方API获取总数,将值设置为DTO并发送到FE。

    我认为您应该使用两个单独的DTO,一个用于FE->BE通信(createBookDTO),另一个用于相反的DTO(QuerybookTo)。您可以将id属性放在QueryBookTo对象上,但不能放在创建对象上

    关于第二个问题,您必须考虑关注点的分离。FE不需要知道拷贝数是来自单独服务的信息,所以请将其清理干净并添加逻辑以将该信息发送到BE端。FE可以使用单个服务获取关于一本书的所有信息,而不考虑数据的来源


    如果您的DB上直接有此信息,您将只能在其be端更新项目

    ,但是如果我需要从FE更新对象,我不需要将ID放入DTO中,以便它可以告诉be需要更新哪个对象吗?通常ID作为路径参数传递
    books/{bookId}
    您也可以在DTO中保留一个ID字段。在映射器中处理它