小编Jes*_*sse的帖子

如何使用Nginx和Lua操作POST请求的JSON主体?

我正在做一个概念证明来演示我们如何在堆栈中实现3scale.在一个示例中,我想做一些POST 请求主体操作来创建API外观,该外观将可能是旧API格式的内容映射到新的内部API格式.例如.改变像

{ "foo" : "bar" , "deprecated" : true }
Run Code Online (Sandbox Code Playgroud)

{ "FOO" : "bar" }
Run Code Online (Sandbox Code Playgroud)

Lua的模块文档的content_by_lua,这似乎是适当的方法说

不要在同一位置使用此指令和其他内容处理程序指令.例如,不应在同一位置使用此指令和proxy_pass指令.

我的理解是content_by_lua是一个像proxy_pass这样的内容处理程序,每个位置只能使用其中一个.

我不认为有任何方法可以删除proxy_pass,因为这是代理工作方式的基础,因此可以在单独的位置捕获请求,使用content_by_lua,然后传递到实现proxy_pass的位置,或者是否有不同的方法,如rewrite_by_lua哪个更合适?


如果它对其他人有帮助,我添加了以下函数(我的第一个Lua),它删除了user_key3scale需要授权的参数,但如果转发到我们的API则无效:

function remove_user_key()
  ngx.req.read_body()
  -- log the original body so we can compare to the new one later
  local oldbody = ngx.req.get_body_data()
  log(oldbody)
  -- grab the POST parameters as a table
  local params = ngx.req.get_post_args()

  -- build up the new JSON …
Run Code Online (Sandbox Code Playgroud)

lua nginx 3scale

11
推荐指数
1
解决办法
2万
查看次数

通过Value NOT Reference返回Javascript对象的属性

所以我有一个类foo,它有一个返回数组条的方法.我有另一个函数调用foo.getBar然后过滤数组.当我使用不同的过滤器时,我希望能够始终获得bar的原始内容,但是bing似乎只是创建对bar的引用,而不是单独的数组.我试过使用return this.bar.valueOf(); 在我的函数foo中,仍然无法正常工作.当我从bing中移除物品时,它们也会从栏中移除.有人请教我创建一个独特的数组而不是参考.

function foo(x, y, z){

    this.bar = new Array();
    ...
    this.bar = [ some , stuff , in , bar ];

    this.getBar = function getBar(){
        return this.bar;    
    }
    ...
}

var FooObject = new foo(x,y,z);

function baz(){

    var bing = FooObject.getBar();

    bing.splice(remove some pieces of the array);
}
Run Code Online (Sandbox Code Playgroud)

javascript arrays function object return-value

3
推荐指数
1
解决办法
7689
查看次数

标签 统计

3scale ×1

arrays ×1

function ×1

javascript ×1

lua ×1

nginx ×1

object ×1

return-value ×1