我想用web api创建新项目。但是当我用id调用api类型GET时我遇到了一些问题。结果是第404页,但我在同一个过程中写入请求类型'POST',在'[HttpPost]'和& '[HTTPGET]'
这是我在控制器名称JobsController中的代码
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Cors;
namespace TechReqApi.Controllers
{
public class JobsController : ApiController
{
[HttpGet]
public string getJobsByRequest()
{
return "dasdasda";
}
[EnableCors(origins: "*", headers: "*", methods: "*")]
[HttpGet]
public List<mdJobReq> getJobsByRequestStatusId(int RequestStatusId)
{
List<mdJobReq> List_mdJobReq = new List<mdJobReq>();
return List_mdJobReq;
}
}
}
这是我的WebApiConfig
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
config.EnableCors();
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Formatters.JsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
}
在我的情况下,我想要像格式一样调用服务 - &gt; api / controller / action / {id},我已经尝试但仍然没有工作
答案 0 :(得分:0)
Probobly你的路线中没有RequestStatusId,
尝试致电:
http://localhost:52741/api/jobs?RequestStatusId=6
或
http://localhost:52741/api/jobs/getJobsByRequestStatusId?RequestStatusId=6
或尝试将操作更改为
[HttpGet]
public List<mdJobReq> getJobsByRequestStatusId(int Id)
<强> EDIT1 强>
要为路由添加操作,请更改routeConfig:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
然后要调用此请求,您必须使用url:
http://localhost:52741/api/jobs/getJobsByRequestStatusId?RequestStatusId=6
编辑2
为了像这样打网址:
http://localhost:52741/api/jobs/getJobsByRequestStatusId/6
也改变行动
[HttpGet]
public List<mdJobReq> getJobsByRequestStatusId(int Id)
有关路线的更多信息: ROUTING