概述
首先要调节路由,路由的位置就是在 app_start文件夹下 的 WebApiconfig下
public static void Register(HttpConfiguration config)
{
// Web API 配置和服务
// Web API 路由
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
路由配置方式
这种模式 仅支持区分进入参数的数据,
比如以下
[HttpGet]
public HttpResponseMessage GetProduct2 (string id)
[HttpGet]
public HttpResponseMessage GetProduct3(string id)
因为其参数 都是Id 接口默认会使用 GetProduct2 ;
如果在不同的control下来实现自定的control方法 则需要 在routeTemplate下加入
即可解决 具体解释为 大家看看我们开始在配置WebAPI的路由规则,规则是api/{controller}/{id} ,也就是说此规则不会去匹配action的名称,而是根据传入的参数类型和个数来决定的。 所以需要在 control下面在指定 action 即可 即为:
routeTemplate: "api/{controller}/{action}/{id}",//加进去既可分开使用了
创建控制器
/// <summary>
/// 签到
/// </summary>
/// <returns></returns>
[HttpGet]
public HttpResponseMessage SetSign(int Id,string msg)
{
签到 modle = new 签到();
string[] strs = msg.Split('_');
modle.姓名 = strs[0];
modle.备注 = strs[1];
modle.时间 = DateTime.Now;
int a = 0;
using (SqlConnection con = GetConnection())
{
if (con!=null)
{
string sql = $"insert 签到 (姓名,备注,时间) values('{modle.姓名}','{modle.备注}','{modle.时间}')";
SqlCommand command = con.CreateCommand();
command.CommandText = sql;
a= command.ExecuteNonQuery();
}
}
HttpResponseMessage result = new HttpResponseMessage();
result.Content = new StringContent(JsonConvert.SerializeObject(a), Encoding.GetEncoding("UTF-8"), "application/json");
return result;
}
public SqlConnection GetConnection()
{
string ConnetStr = ConfigurationManager.AppSettings["linkSql"]; ;
SqlConnection conn = new SqlConnection(ConnetStr);
try
{
conn.Open();
return conn;
}
catch (Exception ex)
{
return null;
}
}
其中返回值必须是 HttpResponseMessage 使用 result.Content = new StringContent(JsonConvert.SerializeObject(a), Encoding.GetEncoding(“UTF-8”), “application/json”);进行序列化输出 这样才能使用。
参考文件为:http://www.west999.com/info/html/chengxusheji/delphi/20180617/4167251.html
最后
以上就是烂漫流沙为你收集整理的我的第一个webApi接口的全部内容,希望文章能够帮你解决我的第一个webApi接口所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复