【问题标题】:How to return a Javascript function in an API?如何在 API 中返回 Javascript 函数?
【发布时间】:2019-07-22 13:36:02
【问题描述】:

我需要在使用 Jackson 构建的自定义 REST API 中返回以下内容。 以下是一个简单的 Javascript 函数。 有没有办法按原样返回javascript函数?无需将其作为字符串返回,然后必须在前端对其进行解析。

{
    yFormat: (timestamp) => { return date.getDurationValue(timestamp); }
}

【问题讨论】:

  • 不,这是不可能的。您正在传输 JSON,其中没有任何功能 - 它只是将数据序列化为文本。
  • 在旁注中,为什么您甚至需要从后端发送该代码?这似乎属于前端,后端不应该关心前端将运行什么代码。
  • JSON 有字符串、数组、对象等。它不具备直接序列化函数的能力。
  • 以字符串形式返回...看看那个帖子stackoverflow.com/questions/4442752/…
  • 在服务端执行方法?

标签: javascript java rest jackson


【解决方案1】:

因此,您创建了一个函数并使用 toString() 将其作为字符串获取。 然后将其添加到您的对象并从中创建 json 字符串。 在处理程序中,您将其转换回函数并使用它。

var testFunc = function(e){alert(e);}
var funcAsString = testFunc.toString();
alert(funcAsString);
var json = { "one": 700, "two": funcAsString };
var parameters = JSON.parse( JSON.stringify(json));
eval( 'var func = ' + parameters.two );
func( 'test' ); // alerts "test"

使用How do I convert a JSON string to a function in javascript? 发布该解决方案。

【讨论】:

  • 很难,这是一个不建议使用 eval 的解决方案。在大多数情况下,重新思考设计会更好。
  • 在这种情况下,eval 比平时更加​​狡猾。即,date 是什么?它应该是 something 但究竟是什么 - 前端是应该确保它在那里并且在范围内但它是具有该变量的任何知识的后端。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
相关资源
最近更新 更多