我一直在构建一个 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的用户提供自己的域。