ORM JSON 请求处理数据集插入
ORM JSON request handling for dataset insert
我正在尝试查看从 POSTMAN 通过 POST 请求向 table 添加安全组信息的 JSON 请求,以及我的请求如下所示
POST /securitygroup HTTP/1.1
Host: localhost:9292
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: c4bef1db-d544-c923-3b0b-e7004e2dd093
{
"securitygroup":{
"secgrp_id": 124,
"secgrp_nm": "SECURITY ADMIN",
"secgrp_profile_nme": "ADMIN"
}
}
Roda 代码如下所示
# cat config.ru
require "roda"
require "sequel"
require "oci8"
require "json"
DB = Sequel.oracle(host: 'xyz.dev.com', port: '1525', database: 'devbox1', user: 'abc', password: 'pass')
class App < Roda
plugin :json, classes: [Array, Hash, Sequel::Model, Sequel::Dataset]
route do |r|
# secgroup = DB[:security_groups]
# secgroup.insert(r.params["securitygroup"])
# secgroup
# above insert threw the following error
# OCIError: ORA-00947: not enough values,
# because SQL generated as below
# INSERT INTO "SECURITYGROUPS" VALUES (NULL)
# so I am trying to access the request object 'r', I feel that I am doing
# something which is not correct
{"response": r.params.["securitygroup"]["secgrp_id"]}
# throws undefined method `[]' for nil:NilClass
end
end
能否请您看一下请求并指出我哪里出错了,请求格式不正确或者是否有不同的方法来处理 ruby 代码上的请求。
我需要帮助来解析以 JSON 形式出现的请求,类似于 https://twin.github.io/introduction-to-roda/
中提供的代码
r.post "albums" do
album = Album.create(r.params["album"])
r.redirect album_path(album) # /albums/1
end
您只需要一点点调整:将插件 :json_parser
添加到应用程序。
class App < Roda
# use this plugin to convert response to json
plugin :json
# use this plugin to convert request from json
plugin :json_parser
...
end
请参阅 Roda 文档 "Plugins that Ship with Roda" 组 "others" 中有 json_parser
插件。
我正在尝试查看从 POSTMAN 通过 POST 请求向 table 添加安全组信息的 JSON 请求,以及我的请求如下所示
POST /securitygroup HTTP/1.1
Host: localhost:9292
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: c4bef1db-d544-c923-3b0b-e7004e2dd093
{
"securitygroup":{
"secgrp_id": 124,
"secgrp_nm": "SECURITY ADMIN",
"secgrp_profile_nme": "ADMIN"
}
}
Roda 代码如下所示
# cat config.ru
require "roda"
require "sequel"
require "oci8"
require "json"
DB = Sequel.oracle(host: 'xyz.dev.com', port: '1525', database: 'devbox1', user: 'abc', password: 'pass')
class App < Roda
plugin :json, classes: [Array, Hash, Sequel::Model, Sequel::Dataset]
route do |r|
# secgroup = DB[:security_groups]
# secgroup.insert(r.params["securitygroup"])
# secgroup
# above insert threw the following error
# OCIError: ORA-00947: not enough values,
# because SQL generated as below
# INSERT INTO "SECURITYGROUPS" VALUES (NULL)
# so I am trying to access the request object 'r', I feel that I am doing
# something which is not correct
{"response": r.params.["securitygroup"]["secgrp_id"]}
# throws undefined method `[]' for nil:NilClass
end
end
能否请您看一下请求并指出我哪里出错了,请求格式不正确或者是否有不同的方法来处理 ruby 代码上的请求。
我需要帮助来解析以 JSON 形式出现的请求,类似于 https://twin.github.io/introduction-to-roda/
中提供的代码 r.post "albums" do
album = Album.create(r.params["album"])
r.redirect album_path(album) # /albums/1
end
您只需要一点点调整:将插件 :json_parser
添加到应用程序。
class App < Roda
# use this plugin to convert response to json
plugin :json
# use this plugin to convert request from json
plugin :json_parser
...
end
请参阅 Roda 文档 "Plugins that Ship with Roda" 组 "others" 中有 json_parser
插件。