2016-11-19 14 views
1

私はWeb Apiを学習していますが、私はちょっと混乱しています。足場の自動WebApiコントローラの生成

Personクラスのコントローラを作成すると、GETPOSTDELETEのメソッドはどのように定義されますか?それを定義するメソッドプレフィックスですか?メソッドの接頭辞を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 Verb get、post、put、deleteなど)属性をメソッドの先頭に追加します。

関連する問題