制作简单的Web API发布请求

时间:2016-12-14 23:26:39

标签: c# asp.net-web-api

我真的很难在网址上发布基本帖子请求来支持网络API上的教程。

我想在浏览器中执行以下操作:http://localhost:59445/api/group/post/?newvalue=test并获取要注册的帖子。但是,我似乎无法正确形成请求。这样做的正确方法是什么?

我收到的错误是:

  

{"消息":"请求无效。"," MessageDetail":"参数字典包含参数&的空条目#39; ID'非可空类型的System.Int32' for method' System.String Get(Int32)'在' twin_groupapi.Controllers.GroupController'。可选参数必须是引用类型,可以为空的类型,或者声明为可选参数。"}

我的模特:

    public class Group  
    {
     public Int32 GroupID { get; set; }
     public Int32 SchoolID { get; set; }
     public string GroupName { get; set; }
    }

路由:

public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services

        GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }

控制器:

    //[Route("api/Group/Post")]
    [HttpPost]
    public void Post([FromUri] string NewValue)
    {

        string newstring = NewValue;

    }

2 个答案:

答案 0 :(得分:3)

在浏览器中点击URL只会执行GET请求。

你可以:

  • 创建一个简单的<form>,其方法设置为POST,并输入输入以输入您要发送的值(如NewValue),或
  • 使用您喜欢的框架编写一些JavaScript来创建一个AJAX POST请求,或者
  • 使用Postman之类的工具设置POST请求,调用它并检查结果。

答案 1 :(得分:0)

错误消息很可能来自您的Get()方法。

正如@StriplingWarrior所说,当你将方法标记为[HttpPost]时,你正在发出GET请求。如果您在浏览器中使用开发人员工具(在大多数现代浏览器中使用F12来激活它们),您可以看到这一点。

查看How do I manually fire HTTP POST requests with Firefox or Chrome?

注意:参数名称的c#约定是camelCase,第一个字母是普通的,而不是大写字母,例如string newValue