2015-08-24 17 views
5

Daha önce API çağrıları ve standart denetleyici çağrıları için daha önce oluşturulmuş ayrı denetleyicilere sahip MVC 6 ile başlıyorum. MVC 6'da artık APIController sınıfı yoktur ve bu eylemler Controller sınıfınıza dahil edilebilir.Aynı MVC 6 denetleyicisindeki API denetleyici çağrılarını ve denetleyici çağrılarını birleştiriyor

Burada bir TeamsController var. Dediğim zaman ben GET POST yerine denir JavaScript bir yazı yapmak ve ne zaman

[Route("Teams")] 
public ActionResult Teams() 

And then I have actions to return data : 

//GET : api/Teams 
[Route("api/Teams")] 
[HttpGet("GetAllTeams")] 
public IEnumerable<Team> GetAllTeams() 

//GET : api/Teams/5 
[Route("api/Teams/{teamId:int}")] 
[HttpGet("{teamId:int}", Name = "GetTeamById")] 
public IActionResult GetTeamById(int teamId) 

//GET : api/Teams/Chicago Bears 
[Route("api/Teams/{teamName}")] 
[HttpGet("{teamName}", Name = "GetTeamByName")] 
public IActionResult GetTeamByName(string teamName) 

//POST : api/Teams 
[Route("api/Teams/{team}")] 
[HttpPost("{team}", Name = "AddTeam")] 
public void AddTeam([FromBody]Team item) 

//PUT: api/Teams 
[Route("api/Teams/{team}")] 
[HttpPut("{team}", Name = "EditTeam")] 
public void EditTeam([FromBody]Team item) 

//DELETE : api/Teams/4 
[Route("api/Teams/{teamId:int}")] 
[HttpDelete("{teamId:int}", Name="DeleteTeam")] 
public IActionResult DeleteTeam(int id) 

Bunları doğru yapılandırılmış varsa ben örneğin, emin değilim: Ben görünümü döndürmek için bir eylem var Silme yöntemi yerine GetByTeamId çağrılır.

Birisi, bu yolların nasıl en iyi şekilde ayarlanması gerektiği konusunda tavsiyede bulunabilir mi?

DÜZENLEME:

var tAdd = new team(self.Id(), self.TeamName(), self.Logo()); 

        var dataObjectAdd = ko.toJSON(tAdd); 

        $.ajax({ 
         url: 'http://lovelyjubblymvc6.azurewebsites.net/api/Teams', 
         type: 'post', 
         data: dataObjectAdd, 
         contentType: 'application/json', 
         success: function (data) { 
          self.teams.push(new team(data.TeamId, data.TeamName, data.Logo)); 
          self.TeamName(''); 
          self.Logo(''); 
         }, 
         error: function (err) { 
          console.log(err); 
         } 
        }); 
+0

Bize yazıyı JavaScript'te gösterir misiniz? –

cevap

1

Neredeyse vardır: İşte JavaScript yazıdır.

Kod snippet'inizde olduğu gibi AddTeam() yöntemi, bir GET isteğini bekler; bu nedenle, belirttiğiniz POST'un neden işe yaramadığını açıklar. Ancak, verileri değiştirdiği için bir GET isteğine değil, bir POST isteğine yanıt vermek için bu yönteme sahip olmak istersiniz. GET istekleri genellikle URL sorgu parametreleriyle yapılır ve verileri bu şekilde değiştirmek biraz tehlikelidir. yöntem imzası gibi olmalıdır:

[Route("api/Teams/{team}")] 
[HttpGet("{team}", Name = "AddTeam")] 
public void AddTeam([FromBody]Team item) 

Ve aramak istiyorsanız unutmayın EditTeam() ya DeleteTeam() Eğer isteği size denetleyici özelliklerinde bazı hatalar var sırasıyla

0

bir PUT göndermek veya SİL zorunda . Fiil ve Rotayı belirtmeniz gerekmiyor. . Fiil aşırı yüklemesi rotayı kullanır. POST javascript'inizden emin değilim, ama bir posta isteği yapıyorsanız emin olmak için [HttpPost] yöntemine gitmelidir.