2017-12-23 8 views
0

だから、このリクエストはマルチパートタイプであれば、私は、koa2、 を私はkoa ctxはマルチパート/フォームデータ型かどうかを区別する方法は?

ctx.request.body.fields 

を処理する必要があると信じて使っていそう私は

ctx.request.body 

を処理するので、これらの2を区別して処理するための最良の方法は何でしょうケース?

+0

誰にでも私に-1を与えました。検索するものを知っているなら、私はここで質問しません。これらのキーワードに基づいて質問を理解できない場合は、コードを書く資格はありません。 – user3552178

+0

'ctx.req.headers'をチェックして、' Content-Type'を見ることができませんでしたか? – saadq

+0

@saadq今のところ、ctx.request.body.fieldsが定義されていないかどうかを確認できます。しかし、非常に多くのパッケージがあります:koa-body、koa-bodyparser、koa-better-body ...私はこれを行うための最善の方法を探しています。 – user3552178

答えて

0

私の考えは、フォーム提出とその他の活動を確認する必要がある場合は、エンドポイントが多少行っていると思いますか?当然、あなたのユースケースに大きく依存しますが、フォームデータと他のコンテンツタイプを別々に保つことは、より明確なAPIになる可能性があります。

私は、fieldsの存在を確認するよりも複雑になる理由は見当たりません。 koa-bodyはこの問題を解決するのに最適な方法です。

ミドルウェアスタックを使用することをお勧めします。たとえば、フォームの提出があっても、他の操作を許可する場合にのみ行います。

router.post('/', koaBody({ multipart: true }), 
    async (ctx, next) => { 
    if (ctx.request.body.fields) { 
     // Handle form if present 
    } 
    await next() // Pass control down the stack 
    } 
)) 
関連する問題