1
나는 Web Api를 배우고 있으며 약간 혼란 스럽다.비계 자동 WebApi 컨트롤러 생성
Person
클래스의 컨트롤러를 만들 때 GET
, POST
, DELETE
은 어떤 방법으로 정의 되나요? 그것을 정의하는 접두사 접두사입니까? 그것은 규칙의 접두사를 GET
, POST
등으로 설정하는 관례입니까?
생성 제어기는 :
public class PeopleController : ApiController
{
private PersonContext db = new PersonContext();
// GET: api/People
public IQueryable<Person> GetPeople()
{
return db.People;
}
// GET: api/People/5
[ResponseType(typeof(Person))]
public IHttpActionResult GetPerson(int id)
{
Person person = db.People.Find(id);
if (person == null)
{
return NotFound();
}
return Ok(person);
}
// PUT: api/People/5
[ResponseType(typeof(void))]
public IHttpActionResult PutPerson(int id, Person person)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (id != person.Id)
{
return BadRequest();
}
db.Entry(person).State = EntityState.Modified;
try
{
db.SaveChanges();
}
catch (DbUpdateConcurrencyException)
{
if (!PersonExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return StatusCode(HttpStatusCode.NoContent);
}
// POST: api/People
[ResponseType(typeof(Person))]
public IHttpActionResult PostPerson(Person person)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.People.Add(person);
db.SaveChanges();
return CreatedAtRoute("DefaultApi", new { id = person.Id }, person);
}
// DELETE: api/People/5
[ResponseType(typeof(Person))]
public IHttpActionResult DeletePerson(int id)
{
Person person = db.People.Find(id);
if (person == null)
{
return NotFound();
}
db.People.Remove(person);
db.SaveChanges();
return Ok(person);
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
private bool PersonExists(int id)
{
return db.People.Count(e => e.Id == id) > 0;
}
}
이 방법은 'Get' 또는'GetPeople'이라고 할 때'GET' HTTP 동사입니다. 'PutPerson'이라면'PUT' HTTP 동사 등입니다. –