2017-07-03 7 views
0

私は、Openshiftで動作しているサービスにv1/health_checkエンドポイントを追加しました。エンドポイントはすべてのhttp動詞を受け入れ、要求にあったものを返します。ランニング例えばHttp Openshiftで呼び出されたときにエンドポイントが消失すると、エンドポイントが削除される

、:それはローカルで実行されているサービスに対して curl -X DELETE -G 'http://localhost:8080/v1/health_check' -F "user_id=1" -F "build_category_id=14" -F "notification_type=slack" が返されます。私はそれがOpenshift上で実行されているサービスに対して同じカール要求を使用する場合

{ 
    "endpoint": "/v1/health_check", 
    "form_data": { 
    "build_category_id": "14", 
    "notification_type": "slack", 
    "user_id": "1" 
    }, 
    "http_method": "DELETE", 
    "request_data": {} 
} 

、私が手:

{ 
    "endpoint": "/v1/health_check", 
    "form_data": {}, 
    "http_method": "DELETE", 
    "request_data": {} 
} 

DELETEメソッドの本体がOpenshiftで失われている理由はありますか?

その他の注意事項:

  • それは私がまた私が上にrshを実行すると、これは特にIs an entity body allowed for an HTTP DELETE request?
  • を読んだ後、ほとんどのRESTfulなアプローチではないことをいくつかの研究の後に認めるgevent.wsgiWSGIServer
  • を使用してフラスコサービスですOpenshiftポッドを開き、サービスをカールさせると、エンドポイントは期待通りに機能し、エンティティ本体が通過することを意味します。
+1

ルーティングレイヤーを経由しないようにアプリケーションのポッド内からカールリクエストを試してください。ポッド内でインタラクティブシェルを取得するには '' oc rsh''を使い、ウェブコンソールを使って端末を取得してください。 –

+0

大きなポイント! Openshiftノードの内部で試してみたところ、削除要求が通過できるようになりました。 – NateW

+0

httpプローブは 'GET'リクエストに限定されていると思います。代わりに、[docs](https://docs.openshift.org/latest/dev_guide/application_health.html#container-health-checks-using-probes)に示されているコマンドexecメソッドを代わりに使用してみてください。 – brennan

答えて

1

-X DELETE-Gの両方のオプションを使用しないでください。 -Gには、HTTP GETを使用するオプションがあります。 -X DELETEには、HTTPメソッドにDELETEを使用すると記載されています。

MacOS Xからの私のテストでは、両方の混乱を使って、実際にリクエストの内容を送信しないようにしていることが示唆されています(curl)。

$ curl -v --request DELETE -G --data xxx http://.../ 
* Trying 52.87.56.37... 
* Connected to ... (52.87.56.37) port 80 (#0) 
> DELETE /?xxx HTTP/1.1 
> Host: ... 
> User-Agent: curl/7.43.0 
> Accept: */* 
> 
< HTTP/1.1 200 OK 
... 
関連する問題