2016-11-19 1 views
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; 
    } 
} 
+0

이 방법은 'Get' 또는'GetPeople'이라고 할 때'GET' HTTP 동사입니다. 'PutPerson'이라면'PUT' HTTP 동사 등입니다. –

답변

1

없음! 그 필수는 아닙니다 .. 당신은 PostPerson() 대신 GetPerson(), Post() 대신 Get()을 간단히 쓸 수 있습니다. 원하는 이름을 사용하여 메서드를 명명 할 수도 있지만 Accept 동사 (http 동사 등)를 사용해야합니다. get, post, put, delete 등) 속성을 메소드의 헤드에 추가합니다.