我是Web api的新手,正在测试如何使用发布请求。首先,我创建了具有以下属性的名为学生的模型类。
这是我的模特班:
namespace SelfApi.Models
{
public class Student
{
public string studentId { get; set; }
public string firstName { get; set; }
public string lastName { get; set; }
public string address { get; set;}
}
}
然后在值控制器中,我具有以下代码来实现发布请求。我导入了SelfApi.Models,因此可以访问Student Model类及其属性。在发布请求中,我希望能够发布数据并将其直接映射到Student Model类。
using System.Net.Http;
using System.Threading.Tasks;
using System.Web.Http;
using SelfApi.Models;
namespace SelfApi.Controllers
{
public class ValuesController : ApiController
{
static HttpClient client = new HttpClient();
// POST api/values
public async Task PostAsync([FromBody] Student student)
{
client.BaseAddress = new Uri("http://localhost:4570/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.PostAsJsonAsync("api/values",student);
response.EnsureSuccessStatusCode();
}
}
}
现在在邮递员中,我选择一个POST请求,选择json(application / json)并将其包含在主体字段中。请注意,此json数据直接映射到我在Student Model类中拥有的数据。
{
"studentId" : "23",
"firstName" : "John",
"lastName" : "Black",
"address" : "DC"
}
当我触发请求时,我收到了500:Internal Server Error。我愿意接受建议,如果我的代码有误,请告诉我。我很想这样做。我整天都在这里。谢谢。
答案 0 :(得分:0)
如果您要从客户端调用某个操作,但是在服务器中必须实际处理该请求,您执行的方式会导致无限循环,那么httpclient
类是完全错误的该请求到达您的服务器,然后又一次又一次地发送到服务器,您必须在控制器中执行此操作
namespace SelfApi.Controllers
{
public class ValuesController : ApiController
{
private AppDataBaseContext DB = new AppDataBaseContext();
// POST api/values
public async Task PostAsync([FromBody] Student student)
{
DB.Student.Add(student);
await DB.SaveChangesAsync();
return Ok();
}
}
}
哪个AppDataBaseContext是您的ef DbContext。