我们如何覆盖默认的环回REST API模型端点?例如,当调用以下GET API时,我想调用名为 list 的自定义模型方法。
我指的是文档https://loopback.io/doc/en/lb2/Exposing-models-over-REST.html
1。来自环回浏览器的API端点:http://localhost:3000/api/Assets
2.Model方法定义:
Asset.list = function(cb) {
console.log("called");
}
Asset.remoteMethod('list', {
http: {path: '/'},
returns: {type: 'Object', root: true}
});
答案 0 :(得分:0)
您的console.log("called");
应该只出现在您的终端中,而不是在网络浏览器中显示-这也许就是为什么您现在看不到它的原因。
如果您想在Web浏览器上看到某些内容,则必须为回调返回一个值,例如:
module.exports = function (Asset) {
Asset.list = function(cb) {
console.log("called");
cb(false, {'called': true}); // cb(error, returned value(s));
}
Asset.remoteMethod('list', {
http: {verb: 'get'},
returns: {type: 'Object', root: true}
});
}
此文件应位于您的 common / model / asset.js
中在您的 server / model-config.json 中,不要忘记引用您的模型:
...
"Asset": {
"dataSource": "yourdatasource", //change this by your datasource name
"public": true
}
...
答案 1 :(得分:0)
如果您不想使用默认路径(默认方法未使用),则应将新的远程方法添加到JSON模型配置中,并在JS模型文件中定义方法:
"methods": {
"myCustomMethod": {
"accepts": [
{
"arg": "req",
"type": "object",
"http": {
"source": "req"
}
}
],
"returns": [
{
"type": "Array",
"root": true
}
],
"http": {
"verb": "GET",
"path": "/myCustomPath"
}
}
}
Candidate.myCustomMethod = (req) => {//method code}
如果您要覆盖默认的环回路径(自动生成的方法),则还应该禁用默认方法。
Candidate.disableRemoteMethodByName('find');
因此,现在您可以将JSON配置“ / myCustomPath”更改为“ /”,并且您的远程方法将引用您的函数,而不是默认值。