如何创建可以接收对象的[HttpPost]?



我想通过HttpResponseMessage从我的客户端代码发送一个对象,并在服务器端读取该对象并将userId保存在一起。

我的客户端看起来像这样:

public async Task<ViewResult> Add(Car car)
{
Car c;
using (Database db = new Database())
{
c = db.Cars.First(x => x.Id == car.Id);
}
HttpClient client = new HttpClient();
string json = JsonConvert.SerializeObject(c);
HttpContent httpContent = new StringContent(json);           
string url = "https://localhost:5001/api/cars/Saved/userId = " + AccountController.curentUser;    
HttpResponseMessage response = await client.PostAsync(url, httpContent);
return View("~/Views/Car/PreviewCar.cshtml");
}

在服务器端,它应该看起来像这样

[HttpPost("Saved/userId = {userId}")]
public async Task<ActionResult<CarS>> PostSavedCar(string userId) 
{
// car = get from client side 
car.UserId = userId;
_context.SavedCars.Add(car);
await _context.SaveChangesAsync();
return CreatedAtAction("GetSavedCar", new { id = car.Id }, car);
}

我不知道我应该在该评论部分放什么来获取对象然后反序列化它?

在客户端中设置内容类型 json:

HttpContent httpContent = new StringContent(json, Encoding.UTF8,"application/json"); 

和你的 API :

[HttpPost("Saved/userId = {userId}")]
public async Task<ActionResult<CarS>> PostSavedCar([FromBody]Car car, string userId) 
{
car.UserId = userId;
_context.SavedCars.Add(car);
await _context.SaveChangesAsync();
return CreatedAtAction("GetSavedCar", new { id = car.Id }, car);
}

实际上你不需要单独传递userId - 为什么不设置car。客户端上的UserId,因为您已经知道它是什么值(甚至更好的是,设置它在服务器端(?这样,您只需在请求正文中传递汽车即可。

相关内容

  • 没有找到相关文章

最新更新