2016-12-02 12 views
1

私はゲッターコンテキストを持っています:HTTP :: Server :: Contextとログインフォーム。
今、context.request.bodyのデータを解析して、ユーザーが入力したユーザー名とパスワードを取得します。
POSTリクエストからデータをパースする方法

応答のコンテンツの種類:アプリケーション/ x-www-form-urlencodedで

+0

あなたがこれまでにしようとしているものを投稿してください。 –

+0

私はHTTP :: Paramsを使ってrequest.bodyを解析しようとしましたが、結果はnilです。 –

+0

あなたは私たちに応答のコンテンツタイプを教えておらず、[ここではJSON応答を解析する方法を見ることができます](http://stackoverflow.com/q/32552291/641451)。 – mgarciaisaia

答えて

3

HTTP::Params.parseは、あなたが探しているものです:

# Based on the sample code in https://crystal-lang.org/ home 
require "http/server" 

server = HTTP::Server.new(8080) do |context| 
    context.response.content_type = "text/plain" 
    if body = context.request.body 
    params = HTTP::Params.parse(body) 
    context.response.print "Hello #{params["user"]? || "Anonymous"}!" 
    else 
    context.response.print "You didn't POST any data :(" 
    end 
end 

puts "Listening on http://127.0.0.1:8080" 
server.listen 
+0

ありがとうございます。 –

+1

実際にはルーティング用にcrouterを使用していますが、HTTP :: Paramsを使用してrequest.bodyを解析しようとしましたが、エラーが発生します:タイプが「HTTP :: Params.parse」に一致しています。 私の間違いは、crouterが既にparams変数を持っていて、ボディデータを取得するために、あなたが行ったようにparams ["user"]を使うだけで、データを再度解析する必要はありません。 –

+0

えええええええええええええええええええええええええええええええええええええええええええええええええええええええええんさんは、これらのオプションの解析が、これは "実践的"なアプローチです。フレームワークはおそらくこの機能を呼び出すことになります。喜んで、とにかく助けた:) – mgarciaisaia

関連する問題