2017-02-22 12 views
1

POSTを介してどのような言語が与えられているかをニューラルネットワークに尋ねる非常に簡単なフラスコのAPIを作成しました。 GET経由フラスコへのアクセスCurlでのREST Apiは機能しません

要求

curl -H "Content-Type: application/json" -X POST -d "{"""text""":"""This should be recognized as an english text."""}""" http://<IP>:5000/api/v1.0/findlanguage 

API呼び出しは、ブラウザ内で作業している、と彼らはすべての必要なJSONオブジェクトを返します。 Flaskはサーバー側で応答しており、HTTPコード200で返されたGET要求があった。

しかし、上記のPOST要求はFlaskからの出力を引き起こさない。それだけです

>_ 

:それは私のすべてが見るので、私は推測するコンソールのいくつかの種類を入力すると、このです。これは何でしょうか?何か不足していますか?

の予想される出力は、JSONオブジェクトは次のようにする必要があります。

{ 
    'task': 'findlanguage', 
    'result': 'english', 
    'api': 'v1.0', 
    'call': 'http://<ip>:5000/api/v1.0/findlanguage' 
} 
+0

は、多分それはすべて二重引用符ですか? '' {"text": "これは英語のテキストとして認識されるべきです。"} '' – leovp

+0

フラスコの出力はありますか?ポストの種類はサーバー側で使用したパターンが増えましたか? – dsgdfg

+0

私はこのチュートリアルのhttps://blog.miguelgrinberg.com/post/designing-a-restful-api-with-python-and-flaskに従ってこの実装を実装しました。ここでは、これらの三重二重引用符がLinux内に必要です環境。二重引用符フラスコを使わずに試してみると、HTTPエラー500内部サーバーエラーが返される – Andre

答えて

2

要求が全く送らなっていません。 curlを実行する前に、シェルはさらなる入力を待っています。

しかし、上記のPOSTリクエストは、Flaskからの出力を引き起こしません。これはある私のすべてが見るので、私は推測するコンソールのいくつかの種類に入る:コマンドがアンバランス引用符を持っている場合は、表示されます何

>_ 

。例えば、試してください:あなたはそのプロンプトで別の"を入力してreturnキーを押した場合は、コマンドが実行されます

curl -H "Content-Type: application/json"" 

これは単なる例です。質問のコマンド例の問題は、Content-Type文字列の引用符ではなく、代わりに-dオプションの引数が原因です。

実際に"""三重引用符を使用していますか?もしそうなら、なぜですか?

関係なく、{ブレース文字を開く前に1つのダブルクォート文字を取得してから、}ブレースの後に3つのダブルクォーテーション文字を入力すると、明らかに正しくないようです。

あなただけの一重引用符で -d引数を入れていないのはなぜ

-d '{"text":"This should be recognized as an english text."}' 
+0

私はちょうど新しいことを学びました。ありがとう:-)それは最終的に働いた。サーバー側でエラーが発生しました。私はいつもシングルクォートでHTTP 500を返してきました。 Pythonはコード内のエラーについて何か教えてくれました。それを修正しました、それは動作します...時にはあなたはそれを見ていないことがあります。皆さん、ありがとうございました! – Andre

関連する問題