2016-10-20 40 views
3

私はwebapiコントローラを持っており、以下はpostメソッドです。Web API Postメソッドが動作しない

public HttpResponseMessage Register(string email, string password) 
    { 

    } 

ブラウザからテストするにはどうすればよいですか?

ブラウザで次のようにテストしても、コントローラには当てられません。

http://localhost:50435/api/SignUp/[email protected]&[email protected] 

以下のエラーが出ます。

要求の コンテンツに複数のパラメータ( 'id'と 'password')をバインドできません。

私を助けてもらえますか?

+1

これはコンパイルされますか?あなたのパラメータリストに "["が1つあります... –

+0

WebApiの動作をテストするには、[TestClient](https://blogs.msdn.microsoft.com/yaohuang1/2012/12/02/adding-a)を使用することをお勧めします。 -simple-test-client-to-asp-net-web-api-help-page /)または[Fiddler](http://www.telerik.com/fiddler)の作曲家に依頼する – Marusyk

+0

http:// stackoverflowも参照してください.com/questions/38418787/web-api-post-method-which-classを受け取る方法 – Marusyk

答えて

0

このようにWebApiに複数のパラメータを渡すことができないため、エラーが発生します。

最初のオプション:
あなたがクラスを作成し、このように体内からを介してデータを渡すことができます:

public class Foo 
{ 
    public string email {get;set;} 
    public string password {get;set;} 
} 

public HttpResponseMessage Register([FromBody] Foo foo) 
{ 
    //do something 
    return Ok(); 
} 

番目のオプション:

public HttpResponseMessage Register([FromBody]dynamic value) 
{ 
    string email= value.email.ToString(); 
    string password = value.password.ToString(); 
} 

そして、このようにJSONデータを渡す:

{ 
    "email":"[email protected]", 
    "password":"[email protected]" 
} 

更新日:

URLからデータを取得したくない場合は、属性ルーティングを使用できます。

[Route("api/{controller}/{email}/{password}")] 
public HttpResponseMessage Register(string email, string password) 
{ 
    //do something 
    return Ok(); 
} 

注:
URLは次のようになります。http://localhost:50435/api/SignUp/[email protected]/[email protected]
することは、この方法を使用する場合は、セキュリティ上の問題を持っていますWebApiConfig
のルーティング属性を有効にすることを忘れないでください。

+0

私は「最初のオプション:」に行きました。 –

+0

ブラウザからこれをどのように呼び出すのですか? –

+0

http:// localhost:50435/api/SignUp /?email = sini @ gmail.com&password = sini @ 1234 –

関連する問題