問題タブ [alibaba-cloud]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
162 参照

php - Q&A: Alibaba Cloud Function Compute サービスで PHP を使用して POST 変数を取得する方法

Alibaba Cloud Function Compute で PHP 7.2 ランタイムと HTTP トリガーを試してみました。ドキュメントの基本的な例は次のとおりです。

これは非常にうまく機能します。URL からクエリ パラメータを取得するのは簡単です。ただし、本文のコンテンツは文字列全体でのみ使用できます

ドキュメントには、$requestパラメーターが PSR-7 HTTP メッセージ標準に準拠していると$request->getParsedBody()記載されていますが、POST メソッドによって送信された値を配信するために使用することはできません。期待どおりに機能しませんでした - 結果は空のままです。

その理由は、基盤となるテクノロジーにあります。Alibaba Cloud Function Compute は、イベント駆動型の React PHP ライブラリを使用してリクエストを処理します (これは、$requestオブジェクトを分析することで確認できます)。したがって、$_POST配列は空であり、「POST データを取得する簡単な方法」はありません。

幸いなことに、Alibaba の Function Compute ハンドラーは、本体のコンテンツを次$request->getBody()->getContents();のような文字列として提供します。

したがって、ソリューションは最初に考えたよりも簡単に思えます。たとえば、PHP 独自のparse_str()関数を使用できます。

このスニペットをハンドラー関数に配置すると、POST 変数が$data配列に格納され、さらに処理できるようになります。

これが私と同じ質問をした人の助けになることを願っています:-)

敬具、ラルフ