我在我的Web应用程序中使用Web API 2
,该应用程序也使用MVC
个人用户帐户。所以所有控制器都有[Authorize]
属性。我想测试我的Web API方法,如果它工作正常但我不能使用工具POSTMAN进行测试,因为应用程序的登录功能只是限制。我尝试从邮递员登录到网站,但失败了,那些饼干和所有这些都让我大吃一惊。我想通过从URL本身传递帖子数据来通过浏览器发出该帖子请求。我尝试了多种方法,但似乎我在某处出错了,需要一些帮助。
Routeconfig文件:
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教程并搜索了其他资源,但是为了发布数据和测试人们正在使用postman&在表单正文中发送数据。当GetRequest发布params作为查询字符串工作正常时,我们也不能为PostRequest做同样的事情吗?
答案 0 :(得分:0)
如果你想仍然传递身体并从POSTMAN进行测试,你可以对你的控制器进行一些调整,并且能够实现它。 只需使用[AllowAnonymous]属性标记您的控制器,这将使您的控制器和所有操作方法都可供任何人访问!并且您的控制器看起来与此类似
[AllowAnonymous]
public class AttendancesController : ApiController
{
private ApplicationDbContext context;
public AttendancesController()
{
context = new ApplicationDbContext();
}
}
现在你可以做的就是在POSTMAN中提供URL并从中选择POST HTTP METHODS列表和正文中的
{ "gigId" : "<Your Id Here>"}
希望这有帮助!