在 Web 应用中重用 API 中的模型



我一直在构建一个 API,我发现自己处于一种情况,我想在我的 Web 应用程序中重用 API 中的模型。

[query]<>[webapp]<>[models]<>[api]<>[models]<>[db]

在 Web 应用程序中,我正在基于 API 的输出创建模型。在 API 中,我正在根据数据库的输出创建模型。两种型号彼此相同。

有没有办法在不复制/粘贴模型的情况下正确执行此操作?或者有没有办法避免拥有相同的模型?

编辑:我的意思是我正在使用PHP-API和PHP前端。PHP-API 和 PHP-Frontend 中的两种模型是相等的。

您可以在 API 中创建一个服务,该服务返回模型数据作为其响应。这样,您可以构建一个简单的转换器,将模型从PHP更改为后端中的某种JSON或其他数据结构格式并传输它们。

您将只有实际模型的一个副本,并将自动生成前端使用的模型。

一个非常简单的例子来阐述:

class Backend_Book {
  public $title;
  public $author;    
}
class Backend_Recipe {
  public $name;
  public $ingredients;
  public $steps;
}

添加到您的 API:

class Api_Get_Domain {
  $domain = load_domain();
  $json = [];
  foreach( $domain as $domain_model ) {
    $json[] = convert_model($domain_model);
  }
  return json_encode($json);
}

从前端呼叫:

$http.get('your/api/domain').then( function( response ) {
  domain = response;
});

然后这个想法是"响应"将是这样的:

response = [
  {
    model: "Book",
    properties: [
      "title", "author"
    ]
  },
  {
    model: "Recipe",
    properties: [
      "name", "ingredients", "steps"
    ]
  }
];

现在,您在前端中拥有后端使用的域副本,无需更新。显然,这是一个非常基本的示例,您可以根据需要向域模型添加尽可能多的信息,但基本思想是使API为API的用户提供自己的域。

最新更新