如何通过浏览器使用 Post 数据(Int 类型的单个参数)发出发布请求



我在我的 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>"}

希望这有帮助!

相关内容

最新更新