asp.net - 如何在asp.net mvc中使用请求体

标签 asp.net asp.net-mvc asp.net-mvc-3 rest json.net

我第一次在 ASP.NET MVC 中做一个小项目。我被要求创建一个执行以下操作的 REST API:

  • 接受“/json/party/:accomodation/join”上的 POST 请求,其中 :accomodation 是 ID

我已经弄清楚如何让我的 API 处理 :accomodation 参数的解析。我只是不知道如何读取请求正文。例如,我的 API 使用者希望使用以下请求正文发布到此 URL:

 { "user": 
    { 
        "name": "Hans van Dam",
        "email": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1f777e716c5f6b7a6c6b317173" rel="noreferrer noopener nofollow">[email protected]</a>",
        "straat": "Test street",
        "nummer": "10",
        "woonplaats": "Amsterdam",
        "telefoon": "0687217612",
        "newsletter": true
    },
    "party": {
        "rsvp": 1
        "time": 1370941687
    }
 }

现在我需要读取这个请求正文,并将其解析回对象。如何在 ASP.NET MVC 中执行此操作?

最佳答案

MVC 和 Web API 使用“modelbinder”来解析请求并向 Controller 上调用的操作方法提供参数。要接受请求正文,您只需对所需的 JSON 进行建模,并将其用作操作方法的参数。

public class User
{
    public string Name { get; set; }
    // etc
}

public class Party
{
    public bool Rsvp { get; set; }
    // etc
}

public class JoinRequest
{
    public User User { get; set; }
    public Party Party { get; set; }
}

然后在你的 Controller 中:

public HttpResponseMessage MyApiEndpoint(string accommodation, JoinRequest joinRequest)
{
    // use joinRequest, i.e.
    // joinRequest.User.Name
}

关于asp.net - 如何在asp.net mvc中使用请求体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17304509/

相关文章:

asp.net - Thinktecture.IdentityModel 与 SimpleMembership

asp.net-mvc - Sitecore MVC渲染类型说明

jquery - 从 ajax 动态加载 HTML5 表格

c# - 多行文本框

asp.net-mvc-3 - ASP.NET MVC 3书籍计划

asp.net - “System.Web.HttpContext”不包含 'GetOwinContext' Mystery 的定义

asp.net - 以编程方式将模板字段设置为共享或无版本

c# - 子网格更新时刷新父 Kendo MVC 网格

asp.net - 上传较大的文件时,出现此错误 :Error 404 - File or directory not found

asp.net-mvc - EditorFor() 和附加 View 数据 : how to add data in helper class?