[過去ログ] Go language part 3 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
536: デフォルトの名無しさん [sage] 2020/05/17(日) 08:01:02.13 ID:Y3GCZn29(1/9) AAS
>>534534(1): デフォルトの名無しさん [sage] 2020/05/17(日) 07:48:09.08 ID:8deP89zB(1/10) AAS
>>532
> としても、ParseForm内で分岐させない理由にはなってないと思っちゃうんだけど、それについては?
そもそもParseFormがリクエストのパース処理を包括したラッパー関数だと何処で勘違いしたの?
なぜそこまで頑なにRequest-MethodとContent-Typeの値で分岐しようとしないの?
(Content-Typeの値の有無だけ確認して分岐したって言うのは無しよ)
>>533のあなたの最終的な実装を見るとあなたはContent-TypeとParseFormとParseMultipartFormを理解して使って無いの、何となく動くからってやっつけで実装したようにしか見えないの。
>>516516(1): デフォルトの名無しさん [sage] 2020/05/16(土) 17:40:18.88 ID:e+rgeli+(11/20) AAS
505で書いたように、一見問題がないような対処はできるけど(自分でも手抜きとはわかってる)、問題点の実体が見えてないと対処に漏れが無いという確証が持てないから
538: デフォルトの名無しさん [sage] 2020/05/17(日) 08:07:59.87 ID:Y3GCZn29(2/9) AAS
>>535535(2): デフォルトの名無しさん [sage] 2020/05/17(日) 07:48:39.85 ID:8deP89zB(2/10) AAS
>>533
あなたの最終的な実装を元にして実装するならこんな感じかな(勝ってに拡張しちゃってるけど)
func (i *rInst) ParseForm() error {
var err error
r := i.request
ct := r.Header.Get("Content-Type")
ct, _, err = mime.ParseMediaType(ct)
if err == nil {
switch ct {
case "multipart/form-data":
if r.Method == "POST" {
err = r.ParseMultipartForm(100 * 1024)
} else {
err = errors.New(“invalid request”)
}
case “application/json”:
d := json.NewDecoder(r.Body)
// i.Json = make(map[string]interface{})
i.Json = &BindStructure{}
err = d.Decode(&i.Json)
default:
err = r.ParseForm()
}
}
return err
}
まぁ、頑張って。
application/json ってFormを送るブラウザがあるのか?
bodyをjsonとして送ってくるんだな
540(1): デフォルトの名無しさん [sage] 2020/05/17(日) 08:16:05.54 ID:Y3GCZn29(3/9) AAS
>>535
あ、REST-APIでよく使われる形式なのか
そういうForm使わない呼び出しはサポートしないんで割愛
POST以外のAPIアクセスは事前に拒絶してるから割愛
現状でも問題ないな(手抜き)
541(1): デフォルトの名無しさん [sage] 2020/05/17(日) 08:21:16.95 ID:Y3GCZn29(4/9) AAS
>>540
いや違う
mime.ParseMultimediaTypeは呼んだ方がいい?
呼んだ方がいいから書いてくれてるんだろうな
追加しておきます
ありがとう
543: デフォルトの名無しさん [sage] 2020/05/17(日) 08:35:11.77 ID:Y3GCZn29(5/9) AAS
>>539539(1): デフォルトの名無しさん [sage] 2020/05/17(日) 08:10:55.71 ID:8deP89zB(4/10) AAS
寝ぼけてるぽい、もう一回上げ直し
>>533
あなたの最終的な実装を元にして実装するならこんな感じかな(勝ってに拡張しちゃってるけど)
func (i *rInst) ParseForm() error {
var err error
r := i.request
ct := r.Header.Get("Content-Type")
ct, _, err = mime.ParseMediaType(ct)
if err == nil {
switch ct {
case "multipart/form-data":
if r.Method == "POST" {
err = r.ParseMultipartForm(100 * 1024)
} else {
err = errors.New(“invalid request”)
}
case “application/json”:
d := json.NewDecoder(r.Body)
// i.Json = make(map[string]interface{})
// err = d.Decode(&i.Json)
i.Json = &BindStructure{}
err = d.Decode(i.Json)
default:
err = r.ParseForm()
}
}
return err
}
まって、Content-Typeが無いと mime: no media type になる気がするんだが(コード見ただけだけど)
Context-Type が無かったらParseFormの出番だと思う
545(1): デフォルトの名無しさん [sage] 2020/05/17(日) 08:38:10.44 ID:Y3GCZn29(6/9) AAS
>>542542(1): デフォルトの名無しさん [sage] 2020/05/17(日) 08:26:21.18 ID:8deP89zB(5/10) AAS
スレチになるのでちょっとだけ。
ブラウザが送るって言う解釈とはちょっと違うけどjavascriptで
fetch(url, {
method: 'POST',
headers:{"Content-Type": "application/json"},
body: JSON.stringify(data)
}).then(res => res.json()).then(function(resp) {
// ...
})
みたいにapplication/jsonでリクエストできます。
うん、でもそこはAPIの仕様だから
汎用的なForm解析ならば必要だけど、自分のAPIだと割愛してよいってだけの話
548: デフォルトの名無しさん [] 2020/05/17(日) 08:51:07.87 ID:Y3GCZn29(7/9) AAS
現時点で
// SetParseMemory は ParseMultipartForm で指定するメモリサイズを変更します。
func (i *rInst) SetParseMemory(size int64) {
i.size = size
}
// ParseForm() error
func (i *rInst) ParseForm() error {
v := i.request.Header.Get("Content-Type")
if v == "" {
return i.request.ParseForm()
} else {
if pos := strings.Index(v, ";"); pos != -1 {
v = v[:pos]
}
if v == "multipart/form-data" {
return i.request.ParseMultipartForm(i.size)
} else {
return i.request.ParseForm()
}
}
}
とした
549(1): デフォルトの名無しさん [] 2020/05/17(日) 08:54:49.63 ID:Y3GCZn29(8/9) AAS
あ、これでいいのか
// ParseForm() error
func (i *rInst) ParseForm() error {
v := i.request.Header.Get("Content-Type")
if pos := strings.Index(v, ";"); pos != -1 {
v = v[:pos]
}
if v == "multipart/form-data" {
return i.request.ParseMultipartForm(i.size)
} else {
return i.request.ParseForm()
}
}
552: デフォルトの名無しさん [sage] 2020/05/17(日) 09:00:02.16 ID:Y3GCZn29(9/9) AAS
結局、application/json のために ParseForm から ParseMultipartForm を追い出してる?
やっぱり自分的には納得いかない
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.040s