Gem 怎么格式化 rack 的 @env

tablecell · September 08, 2021 · Last by tablecell replied at September 09, 2021 · 289 hits

象 "rack.input"=>#<Rack::Lint::InputWrapper 这种是不符合 json 格式,常用的 json 格式化工具也用不了

这一看大概是 Hash,里面有的值还是对象(非基本类型),要把它格式化为 json 是什么需求?

硬要做的话:

require 'json'

JSON.dump @env
Reply to Rei

json 可以输出树状视图 看起来清楚一些

rack 就是 输入一个特定格式的 Hash,然后输出一个特定格式的 Array

def call(Hash)
    ['code', {'Content-Type' => 'xxx'}, ['body']]
end 
Reply to tablecell

是要把 json 内容作为 response 输出吗?把上面的 JSON.dump 内容作为 body,conntent-type 设置为 application/json

Reply to Rei

app.rb

require "rack/app"
class App < Rack::App
  get "/" do
    '<form  action="/" method="post" ><input name="username" ><button>Send</button></form></body></html>'
  end
  post "/" do
    params.inspect 
  end
end

config.ru

require './app'
run App

rackup

是看 http://www.rack-app.com/ 这个框架

ruby 的框架真是五花八门 post 参数有的 params 有的是 input 有的是 req 有的是 request.params 不看代码真不知道表单 post 到哪去了

rack-app 是 rack 吗?

Reply to FrankFang

是只依赖 rack 的一个框架 主要功能特点

  • 前缀树路由 写好一个 路由 (对应 rails 的 resouces) 以后 可以 mount 到任意节点 象 include class 那样使用路由
  • 自定义 form parser 可以定制自己的 post 数据格式,比如 post yaml 不仅仅是 form-urlencoded,json 格式两种
  • 针对节点(endpoint)添加 headers/middleware,而不是象一般框架那样全局添加,不管需不需要都要例行公事过一遍
  • form 参数校验
  • 只实现最小可用,可选的功能用 apply_extension 实现 比如模板,日志
  • pure ruby,只依赖 rack
You need to Sign in before reply, if you don't have an account, please Sign up first.