我真的很难在网址上发布基本帖子请求来支持网络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;
}
答案 0 :(得分:3)
在浏览器中点击URL只会执行GET请求。
你可以:
<form>
,其方法设置为POST
,并输入输入以输入您要发送的值(如NewValue
),或答案 1 :(得分:0)
错误消息很可能来自您的Get()方法。
正如@StriplingWarrior所说,当你将方法标记为[HttpPost]
时,你正在发出GET请求。如果您在浏览器中使用开发人员工具(在大多数现代浏览器中使用F12来激活它们),您可以看到这一点。
查看How do I manually fire HTTP POST requests with Firefox or Chrome?
注意:参数名称的c#约定是camelCase,第一个字母是普通的,而不是大写字母,例如string newValue
。