c# - POSTMAN POST 请求返回不支持的媒体类型
问题描述
我正在遵循 Adam Freeman 的“Pro ASP.NET Core MVC 2”中的 API 说明。我有以下 API 控制器类:
[Route("api/[controller]")]
public class ReservationController : Controller
{
private IRepository repository;
public ReservationController(IRepository repo) => repository = repo;
[HttpGet]
public IEnumerable<Reservation> Get() => repository.Reservations;
[HttpGet("{id}")]
public Reservation Get(int id) => repository[id];
[HttpPost]
public Reservation Post([FromBody] Reservation res) =>
repository.AddReservation(new Reservation
{
ClientName = res.ClientName,
Location = res.Location
});
[HttpPut]
public Reservation Put([FromBody] Reservation res) => repository.UpdateReservation(res);
[HttpPatch("{id}")]
public StatusCodeResult Patch(int id, [FromBody]JsonPatchDocument<Reservation> patch)
{
Reservation res = Get(id);
if(res != null)
{
patch.ApplyTo(res);
return Ok();
}
return NotFound();
}
[HttpDelete("{id}")]
public void Delete(int id) => repository.DeleteReservation(id);
}
文本使用 PowerShell 来测试 API,但我想使用 Postman。在 Postman 中,GET 调用有效。但是,我无法让 POST 方法返回值。错误显示为“状态代码:415;不支持的媒体类型'
在 Postman 中,Body 使用表单数据,其中:
key: ClientName, value: Anne
key: Location, value: Meeting Room 4
如果我选择“类型”下拉菜单为“JSON”,它会显示“意外的‘S’”
在标题中,我有:
`key: Content-Type, value: application/json`
我还在正文中尝试了以下原始数据,而不是表单数据:
{clientName="Anne"; location="Meeting Room 4"}
当我使用 PowerShell 时,API 控制器确实工作并返回正确的值。对于 POST 方法,以下工作:
Invoke-RestMethod http://localhost:7000/api/reservation -Method POST -Body (@{clientName="Anne"; location="Meeting Room 4"} | ConvertTo-Json) -ContentType "application/json"
解决方案
将 Postman 与 POST 和 JSON 正文一起使用时,您必须使用raw
数据条目并将其设置为application/json
,数据将如下所示:
{"clientName":"Anne", "location":"Meeting Room 4"}
注意键和值是如何被引用的。
推荐阅读
- php - Composer 在您的平台中检测到问题 - cpanel 致命错误
- javascript - 获取applescript中javascript动作返回的文本
- wordpress - 如何在加载 iframe 之前添加预览缩略图?
- php - 如何从数据库中获取数据并在 PHP 页面上回显
- javascript - 当我尝试获取包版本时,NPM 返回“找不到 bash 命令”
- c++ - 在给定位置检查短语中单词的可用性
- firebase - Firebase 存储上传视频的时间过长
- python - 将图像乘以常数而不损失
- c# - c# CompareTo() 方法
- jupyter-notebook - 即使在编辑 Jupyter Notebook 配置文件并重新启动它之后,默认目录也不会改变??有什么解决办法吗?