我在我的 Web 应用程序中使用该Web API 2
,该应用程序也使用MVC
个人用户帐户。因此,所有控制器都具有[Authorize]
属性。我想测试我的 Web API 方法是否工作正常,但我无法使用工具 POSTMAN 进行测试,因为应用程序的登录功能只是限制。我尝试从邮递员登录该网站,但失败了,饼干和一切都让我大吃一惊。我想通过从 URL 本身传递帖子数据来通过浏览器发出该帖子请求。我尝试了多种方法,但似乎我在某处出错了,需要一些帮助。
路由配置文件:
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name:"AttendanceRoute",
routeTemplate: "api/{controller}/{action}/{gigId}",
defaults: new { gigId = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
控制器:
namespace GigHub.Controllers
{
[Authorize]
public class AttendancesController : ApiController
{
private ApplicationDbContext context;
public AttendancesController()
{
context = new ApplicationDbContext();
}
[HttpPost]
[Route("api/Attendances/Attend/{gigId}")]
public IHttpActionResult Attend([FromBody] int gigId)
{
var attendance = new Attendance
{
GigId = gigId,
AttendeeId = User.Identity.GetUserId()
};
context.Attendances.Add(attendance);
context.SaveChanges();
return Ok();
}
}
}
我尝试过的请求; (1)http://localhost:50702/api/attendances/Attend/5 (2)http://localhost:50702/api/attendances/Attend?gigId=5
当我尝试上述请求时,出现以下错误。(1)请求的资源不支持http方法"GET"。 (2) 未找到与请求 URI 匹配的 HTTP 资源
我遵循了微软的Web API 2教程并搜索了其他资源,但为了发布数据和测试人们使用邮递员并在表单正文中发送数据。当将 GetRequest 的参数作为查询字符串发布工作正常时,我们不能也对 PostRequest 做同样的事情吗?
如果您仍然想通过 POSTMAN 的身体和测试,您可以对控制器进行一些调整并能够实现它。 只需使用 [AllowAnonymous] 属性标记您的控制器,这将使您的控制器和其中的所有操作方法可供任何人访问!您的控制器看起来与此类似
[AllowAnonymous]
public class AttendancesController : ApiController
{
private ApplicationDbContext context;
public AttendancesController()
{
context = new ApplicationDbContext();
}
}
现在您可以做的很简单,在邮递员中给出 URL 并从中选择 POST HTTP 方法列表和正文中只是给出
{ "gigId" : "<Your Id Here>"}
希望这有帮助!