2017-01-16 18 views
-1

私はBeegoフレームワーク(GoLang)で書かれたアプリケーションにVueJSを使って簡単なPOSTリクエストをしようとしていますが、アプリケーションは入力要求を見ません。標準フォームリクエスト(ajaxなし)を使用すると、すべてが正常です。 これは私のVueJSコードです:Beegoはajaxのパラメータを受け付けません

storePost: function(event) { 
    axios.post("/api/posts/store", {body: "test"}).then(function(response) { 
     if (response.data.status == 200) { 
      this.posts.push(response.data.data); 
     }else { 
      console.log("error"); 
     } 
    }, function(response){ 
     console.log("error"); 
    }); 
} 

、これが私のビーゴコードです:

// router.go 
beego.Router("/api/posts/store", &controllers_API.PostsController{}, "post:Store") 

// PostsController.go 
func (this *PostsController) Store() { 
    fmt.Println(this.GetString("body")) 

    // some irrelevant code which handles the response... 
} 

fmt.Printlnはいつも何を印刷しません。標準の書式を使用すると、は問題なしでbodyの値を出力します。

+0

開発ツールの[ネットワーク]タブでペイロードのトラフィックを確認できますか?実際のデータがサーバーに送信されていることを確認するだけです。 – Sombriks

+0

beegoエキスパートはいませんが、クロスドメインに行く場合は、ヘッドメソッドのエンドポイントも必要です。 – RickyA

+0

@Sombriks私がチェックしたところ、データがあります。{body: "test"} – Alen

答えて

0

Beegoはこのヘッダーのデータのみを受け入れます:'Content-Type': 'multipart/form-data'だから、そのヘッダーを追加した後はすべてOKでした。

fmt.Println(this.GetString("test")) 

this.$http.post("/", {test: "test"}, { 
    emulateJSON: true 
}); 

今、あなたはこのようにそれを印刷することができます:私はaxiosと私はvue-resourceに切り替え、これはビーゴで動作するサンプルコードであることを行う方法を知りませんでしたので これが誰かに役立つことを願っています

0

デフォルトでは、axiosとvue-resourceはapplication/jsonを使用していることを確認しました。 emulateJSONこちらはtells vue-resource to use application/x-www-form-urlencodedです。デフォルトでは、要求本体をurlencodedとして扱うので、beegoでjsonデコードを行うだけで済みます。

multipart/form-dataはおそらく長い間(urlencodedのように)そこにあったため、beegoはデフォルトでそれを認識しています。 vue-resourceを使用してmultipart/form-dataリクエストを投稿するには:use FormDataAxios also accepts a FormData as data

関連する問題