如何获得POST数据的WebAPI? [英] How to get POST data in WebAPI?

查看:141
本文介绍了如何获得POST数据的WebAPI?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我发送请求到服务器中的格式如下:

 的http://本地主机:12345 / API /控制器/ PAR1 / PAR2

该请求被正确地解析的方法,如:

  [HttpPost]
公共无效对象邮报(字符串PAR1,PAR2字符串)

不过,我通过请求内容传递附加数据。我怎样才能找回这些数据?

例如起见,让我们说,该请求是从形式发送:

 <形式的行动=HTTP://本地主机:12345 / API /控制器/ PAR1 / par2的方法=后>
    <输入类型=隐藏的名字=数据值=值/>
    <输入类型=提交名称=提交值=提交/>
< /表及GT;


解决方案

这个问题的回答:
如何获得邮政价值观与asp.net的WebAPI


  1. Autoparse使用参数绑定;请注意,动态是由 JToken ,所以使用了 .value的访问。

     公共无效后([FromBody]动态值){
        VAR X = value.var1.Value; // JToken
    }


  2. 阅读就像 Request.RequestUri.ParseQueryString()[关键]

     公共异步任务后(){
       动态的obj =等待Request.Content.ReadAsAsync< JObject>();
       变种Y = obj.var1;
    }


  3. 同#2,只是没有异步(?),所以你可以在一个辅助方法使用它

     私人牛逼GetPostParam< T>(字符串键){
        VAR P = Request.Content.ReadAsAsync< JObject>();
        回报(T)Convert.ChangeType(p.Result [关键]的typeof(T)); //例如转换,可以为空...
    }


警告 - 希望媒体类型应用程序/ JSON 以触发 JsonMediaTypeFormatter 处理

I'm sending a request to server in the following form:

http://localhost:12345/api/controller/par1/par2

The request is correctly resolved to a method like:

[HttpPost]
public void object Post(string par1, string par2)

However, I pass additional data through the request content. How can I retrieve these data?

For the sake of example, let's say, that the request is sent from the form:

<form action="http://localhost:12345/api/controller/par1/par2" method="post">
    <input type="hidden" name="data" value="value" />
    <input type="submit" name="submit" value="Submit" />
</form>

解决方案

From answer in this question: How to get Post Values with asp.net webapi

  1. Autoparse using parameter binding; note that the dynamic is made up of JToken, hence the .Value accessor.

    public void Post([FromBody]dynamic value) {
        var x = value.var1.Value; // JToken
    }
    

  2. Read just like Request.RequestUri.ParseQueryString()[key]

    public async Task Post() {        
       dynamic obj = await Request.Content.ReadAsAsync<JObject>();
       var y = obj.var1;
    }
    

  3. Same as #2, just not asynchronously (?) so you can use it in a helper method

    private T GetPostParam<T>(string key) {
        var p = Request.Content.ReadAsAsync<JObject>();
        return (T)Convert.ChangeType(p.Result[key], typeof(T)); // example conversion, could be null...
    }
    

Caveat -- expects media-type application/json in order to trigger JsonMediaTypeFormatter handling.

这篇关于如何获得POST数据的WebAPI?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆