テンセントクラウドクラウド機能でミニマルなAPIゲートウェイを達成するために
イントロ
マイクロ文字のドメイン名アプレットは、レコードを必要としませんが、どのサーバーの大陸、と私は少しアプレットを行うには、最初にレコードがやや面倒だと思いあきらめたい、と後でテンセントクラウドクラウド機能することを学んだので、テンセントクラウドクラウド機能の実装を使用しますレコードのドメイン名の問題を回避するために、それによって、クラウドAPI関数を介して実アドレスを呼び出すためのシンプルなAPIゲートウェイ。
クラウド機能の概要
テンセントとサーバーを購入して管理することなく、あなたがコードを実行するのに役立つので、機能上(サーバレスクラウド機能、SCF)は、企業や開発者のためのテンセントクラウドではありません、サーバーの実行環境は、リアルタイムのファイル処理とデータ処理と他のシーンであります理想的なコンピューティング・プラットフォーム。あなたは、単にSCFプラットフォームサポートされる言語のコアコードを使用して条件を記述し、実行するコードを設定し、弾力性、安全にテンセントのクラウド基盤上のコードを実行することができます。
コンピューティングリソースの変更
クラウドサービス、コンピューティングリソースの発展に伴い、抽象度の高い、テンセント雲は機能や、ユーザーが選択するためのコンピューティングリソースの抽象化のレベルの様々な全体でクラウドに物理サーバーから提供しています。
- ブラックストーンの物理サーバー:物理マシンの拡張ユニット。完全に全体のリソースが所有しているユーザーのコンピューティングエンティティ、最高のセキュリティを提供します。
- クラウドサーバ(CVM):クラウドサーバー拡張ユニット、仮想化されたハードウェア・デバイス。物理マシンのリソースを共有するユーザーと他のテナントは、CVMはまだ相対的かつ反復的展開の独自の指標を容易に構成することができます。
- コンテナ:延長部、仮想化されたオペレーティングシステムとして機能します。テスト環境と本番環境とまったく同じ、テスト、および展開は非常に簡単。
- クラウド機能:機能拡張ユニット、仮想化されたランタイム環境(ランタイム)。、それは完全に自動化された、既存のコンピューティングリソースの最小単位である1クリックし、高度な拡張性と他の特性を展開し、軽量なサービスの展開が非常に良い選択です。
概要サーバーレス
いいえ、サーバ(サーバレス)は、何のサーバが存在しないことではないではありませんあなたはサーバレスを使用するとき、あなたは退屈な、ちょうどコアコードスニペットに焦点を当て、あなたは複雑をスキップすることができ、サーバーおよび最適化サーバをログインしなくても、基礎となるリソースを気にしないことを意味し基本的な仕事。イベント又は要求トリガーによって完全にコアコードスニペットは、パラレルプラットフォームは、自動的にサービス要求に応じてリソースを調整します。サーバレスは、アイドル事実上無制限の拡張機能を持って、すべてのリソースを実行しないでください。ステートレスコードが実行されると、あなたは簡単に、迅速な反復、スピード展開を実現することができます。
もっと説明参照公式文書
現在、無料のクレジットを使用することができますテンセントのクラウド機能を、十分にすることができないアプリケーション、:
私は、この機能の単なるデモだけど、量が適切に適切に月何の問題を実行しないように最小限のメモリ構成を使用し、自由のために十分であるべき、残り時間があるでしょう。
60 * 60 * 24 * 31 = 2678400 <3,200,000
クラウド機能を作成します。
クラウド機能を作成します。
デフォルトのテンプレートの数を提供し、あなたは自分のニーズに応じて、私はここに空の機能を選択し、動作環境は8.9 nodejsで選択し、次のステップをすることができます作成することができます
あなたの方法は、比較的簡単で、直接編集して、良いを完了することができれば、より複雑な場合、その後、あなたが最初に完了することができ、よくして、あなたの地元のエディタが更新されます。
使用
クラウドゲートウェイAPI関数出典:https://github.com/WeihanLi/ActivityReservation/tree/dev/ActivityReservation.Clients/ReservationApiFunction
クラウド機能更新
変更しindex.ts
たファイルを転送するアドレス
ディレクトリに実行しtsc
、コンパイル後に生成されたJS
distディレクトリの下に実行するにはnpm install
、依存関係をインストールし、現在は一つだけを使用しgot
、あなたが何か他のものを使用している場合、してくださいpackage.json
ファイルを追加、または実行npm install <package-name> --save
ジッパーの下にdistディレクトリの内容をパックした後、あなたは、コンソールテンセントクラウドにアップロードすることができます
コードは後にアーカイブを開く、アーカイブはdistのディレクトリを含めることができないことに注意してください
dist.zip
- - node_modules
- - httpRequester.js
- - index.js
- - packages.json
- 設定トリガー:
そこサービスをトリガーするAPIゲートウェイでAPIゲートウェイを作成した後に作成され、アクセスのアドレスを取得します
私たちは、API、および実施例にアクセスするには、次のパスを参照してください。
この要求は、実際に転送されますhttps://reservation.weihanli.xyz/api/notice
したがって、一時的に記録するためのアプレット・サーバーのドメイン名をバイパスし、その上に要求インタフェースアドレスアプレットにこのアドレスを使用します~~
原則
シンプルなAPIゲートウェイを実装するための要求を転送します
実装上の問題は、プロセス中に遭遇します
unable to verify the first certificate
これは、HTTPSは、検証の証明書を要求する問題であり、参照のStackOverflow https://stackoverflow.com/questions/31673587/error-unable-to-verify-the-first-certificate-in-nodejs/32440021
環境変数を設定することでNODE_TLS_REJECT_UNAUTHORIZED=0
解決します
アクセスAPI 404
訪問した後、ログを見ることで、アドレス発見要求の出力は、パスを要求すると、関数名であり、その関数名を除去することができます
if ((<string>event.path).startsWith('/reservationWxAppGateway')) {
event.path = (<string>event.path).replace('/reservationWxAppGateway', '');
}
その後で見つかったevent
パラメータ、2がされているevent.requestContext.path
クラウド関数パスを表すために、このパスは、要求を削除するには、実際のパスです。
if((<string>event.path).startsWith(`${event.requestContext.path}`)){
event.path = (<string>event.path).replace(`${event.requestContext.path}`, '');
}
リクエストヘッダを転送
リクエストヘッダを転送するとき、host
リクエストヘッダはときに私はヘッダーを渡し、通過することができないhost
要求がヘッドに設定されていますundefined
headers["host"]= undefined;