2016-12-14 82 views
1

我真的很努力在网址中提供一个基本的发布请求来支持web api上的教程。制作简单的Web API发布请求

我想在浏览器中做这样的事情:http://localhost:59445/api/group/post/?newvalue=test并获得注册信息。不过,我似乎无法正确地形成请求。什么是正确的方法来做到这一点?

我收到的错误是:

{“消息”:“请求是无效的。”,“MessageDetail”:“参数字典包含参数的不可为空的‘id’一个空条目在'twin_groupapi.Controllers.GroupController'中为'System.String Get(Int32)'类型'System.Int32'。可选参数必须是引用类型,可为空类型或声明为可选参数。“}

我的模型:

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; 

    } 
+0

你有另一种名称为“httpget”的方法吗? – DarkKnight

+0

只有其他动词是'// GET:api/Group [Route(“api/Group/Get”)] [HttpGet] public Array Get()' –

回答

3

在浏览器中打一个网址只会做一个GET请求。

您可以:

  • 创建一个简单的<form>其方法设置为POST和表单输入输入要发送(如NewValue)的值,或
  • 写一些JavaScript来创建一个AJAX POST请求使用您最喜爱的框架,或者
  • 使用像Postman这样的工具来设置POST请求,调用它并检查结果。
+0

非常感谢。就是这样。这对我来说真的很新鲜。 –

0

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

由于@StriplingWarrior表示您正在进行GET请求,而方法标记为[HttpPost]。如果您在浏览器中使用开发人员工具(大多数现代浏览器中的F12来激活它们),您可以看到这一点。

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

注:参数名称C#的惯例是驼峰与第一个字母是常见的,不是资本,例如string newValue