問題タブ [uritemplate]
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.
url-rewriting - 複雑なルーティング WSO2 API リソース uri テンプレート
短縮版。を処理する API を作成しようとしています。
これまでのところ、これは私が持っているものですが、私が探しているものではありません。それは私に /goals/goal/{goalId} を与えるので
GoalID は常に一致/^\d+$/するので、それでルーティングできれば何とか機能します。最終的には追加したいと思い/goals/{goalID}/item and /goals/{goalID}/items/{itemID}ますが、最初のステップがわかれば簡単にできると思います。
ここでこれを行う方法がない場合、リソースに到達する前に wso2 内の URL を書き換えることができる方法はありますか?その後、 I know I could know I could route it through a proxy に置き換えて、apache/goals/(\d+.*)または/goals/goal/$1?何かが、私には WSO2 の目的を無効にしているように思えます。
c# - 文字列以外のパラメーターを使用した WCF JSON WebService 操作をブラウザーから呼び出すことはできますか?
UriTemplate は、以下のような形式 (id={id} など) でない限り、文字列パラメーターのみをサポートすることを理解しました。たとえば、次のとおりです。
UriTemplate を使用して文字列以外を WCF RESTful サービスに渡すことはできますか?
ただし、次の作業を行うことはできません。2番目のパラメーターを文字列(文字列配列ではなく)に変更しても。この種の操作は、アドレス フィールドに URL を入力してブラウザから呼び出すことができますか?
パラメータを文字列に変更して次のように入力すると、すべて機能します。
ありがとう!
c# - at UriTemplate のオプション パラメーターにより、AfterReceiveRequest - WCF - IDispatchMessageInspector が 2 回呼び出されます。
もう少し深く掘り下げて、新しい詳細を発見しました。
一般に「UriTemplate」が「AfterReceiveRequest」の 2 回目の呼び出しを引き起こすのではなく、内部のオプションのパラメーターが原因です。
メソッドを呼び出すと
http:///myserver/result/val1
AfterReceiveRequest は 2 回呼び出されます。
次のようなすべての可能なパラメータを渡すと
http:///myserver/result/val1/val2/val3
無駄な呼び出しはありません。その動作は意図したとおりですか?
--- 最初の投稿に続き、参考までに ---
WCF REST サービス システムを実装しているときに、http ヘッダーの問題に行き詰まりました。
私の中には、属性で定義されServiceContractたメソッドがあるので、経由で呼び出すことができますUriTemplateWebGet
それ以外の
(互換性の理由からこれが必要です。)
また、http-headersコレクションには重要な値があり、それを読む必要があります。IDispatchMessageInspectorしたがって、このインスペクターを実装してEndpointDispatchers MessageInspectorsコレクションに追加します。これにより、AfterReceiveRequestWCF によって呼び出され、アクセスWebOperationContext.Current.IncomingRequest.Headersして目的の値を読み取ることができます。
問題:
WCFUriTemplateは、宛先メソッドへの 2 番目の要求を生成することによって -mapping を解決しますが、元の呼び出しから生成された 2 番目の呼び出しにヘッダー エントリを渡しません。そのためAfterReceiveRequest(そしてもちろんBeforeSendReplyも) は 2 回呼び出されますが、実際のクライアント呼び出しからのヘッダー値は最初の呼び出しにのみ含まれます。
AfterReceiveRequestまた、最初の呼び出しから 2 番目の呼び出しにヘッダー値を渡すための「特別な方法」を実装するために、最初の呼び出しと2 番目の呼び出しを関連付ける方法が見つかりませんでした。
UriTemplate-redirected 2 番目の呼び出しにヘッダーをルーティングするように WCF に指示する方法はありますか?
明確にするために、いくつかのコードフラグメントを次に示します。
java - RFC 6570 URI テンプレートは、オプションのパラメーターのスペース区切りをエンコードできますか?
私は US Census API (例) を使用しています。この API には、スペースで区切られたオプションのパラメーターがあります。汎用の URL テンプレート メカニズムが必要だったので、Google が私を RFC 6570 とその実装に導きました。
しかし、私が理解しているように、RFC 6570 は次のようなクエリ部分文字列をテンプレート化できません。
ここで、「county」は未定義である可能性があり、その場合は省略し、先行する「+」でエンコードされたスペースとともに、そのままにしておきます。
RFC 6570 はこれをエンコードできますか?
そうでない場合、一般的に使用される汎用 URI テンプレートの代替テンプレート構文はありますか?
ここで行われているように、クエリのサブ要素を区切るために「+」を使用することは一般的ですか、それとも非常に風変わりですか? (それが賢明かどうかではなく、使用頻度について尋ねているのです!) RFC 6570 は、使用される URI クエリ構文を制御できないアプリケーションに対して制限が厳しすぎるのでしょうか?
アップデート
2 つの問題があります。1 つは「+」区切り文字であり、もう 1 つは「state:02」などでの「:」の使用ですが、どちらの方法もわかりません。
environment-variables - テンプレート変数が YQL クエリにないと言われているのはなぜですか?
YQL クエリ内で API キーを隠そうとしています。そうするために、私はこの投稿に従ってみました(同じ著者によってここでも説明されています)。URI テンプレートを使用してクエリを実行しようとすると、次の警告が返されます。
これが私が取ったステップです:
yql.storage.adminを実行して API キーを保存します。insert into yql.storage.admin (value) values ("set BungieAPIKey='YOUR_KEY' on uritemplate;")- 返された実行キーを使用してコンソールに環境をロードします (
https://developer.yahoo.com/yql/console/?env=store://XXXXXXXXXX) - 走る
select * from json where url in (select url from uritemplate where template='http://bungie.net/videos/{BungieAPIKey}/{user}/{page}' and user='foo' and page='bar')
返される JSON は次のとおりです。
問題を絞り込むために、クリーンな YQL コンソール (環境設定なし) で次のクエリを試しました。
これを実行すると、同じ警告が表示されます。テンプレート変数が、環境変数として設定したものからプルされないのはなぜですか?
rest - 残りの Web サービスを呼び出すことができません
サンプルの休憩サービスの例を試しています。私の休息サービスクラスは次のとおりです。
今、このURLを呼び出そうとすると:
405 エラーが発生します。メソッドは許可されていません 以下は私の web.xml です:
私はジャージ1.18を使用しています。私は何を間違っていますか?あなたのソリューションを楽しみにしています。
wso2 - WSO2 API マネージャー v1.8.0
API コンシューマからバックエンド API エンドポイントにパス パラメータをマッピングする単純なユース ケースがあります。私は多くの調査を行いましたが、それを行う方法に関する具体的な答えは見つかりませんでした。私の理解では、パス パラメーターのマッピングは、uri-template を使用しないと実行できません。ここでの問題は、API Manager が API Publisher ユーザー インターフェイスからの uri-template をサポートしていないため、代わりに url-mapping を使用する必要があることです。WSO2 開発者の 1 つのブログによると、個々のシナプス構成に移動して、それを手動で uri-template に変更できます。しかし、実際に起こっていることは、synapde 構成に加えられた更新が何らかの方法でパブリッシャー UI から発生するデータベース更新をトリガーし、最終結果が機能しないということです。パスパラメータをどのようにマッピングできるかについて、誰かが先に進む方法を提供してもらえますか? 参考までに-クエリパラメーターマッピングは、uri-templateを必要とせず、url-mapping自体を使用して実装できるため、私にとっては機能しています。