SORU
5 Mart 2012, PAZARTESİ


ASP.NET Web özel yöntem adları API

Yeni ASP.NET MVC 4 Web API, WCF Web API çeviriyorum. Bir UsersController var, ve bir yöntem kimlik Doğrulaması isimli olsun istiyorum. Eğer bu hizmetleri içine ekstra eklemek istersem GetAll, ayağına bir kez gelir, Post ve Delete yapmak için nasıl örnekler görüyorum, ancak ne? Örneğin, benim UsersService bir kullanıcı adı geçer bir yöntem Kimliğini aradı ve işe yaramıyor ancak parola gerekir.

public class UsersController : BaseApiController
{
    public string GetAll()
    {
        return "getall!";
    }

    public string Get(int id)
    {
        return "get 1! "   id;
    }

    public User GetAuthenticate(string userName, string password, string applicationName)
    {
        LogWriter.Write(String.Format("Received authenticate request for username {0} and password {1} and application {2}",
            userName, password, applicationName));

        //check if valid leapfrog login.
        var decodedUsername = userName.Replace("@", "@");
        var encodedPassword = password.Length > 0 ? Utility.HashString(password) : String.Empty;
        var leapFrogUsers = LeapFrogUserData.FindAll(decodedUsername, encodedPassword);

        if (leapFrogUsers.Count > 0)
        {
            return new User
            {
                Id = (uint)leapFrogUsers[0].Id,
                Guid = leapFrogUsers[0].Guid
            };
        }
        else
            throw new HttpResponseException("Invalid login credentials");
    }
}

Ben göz myapi/api/users/ ve çağrı GetAll ve ben göz myapi/api/users/1 ve aramak, ancak ararsam myapi/api/users/kimlik doğrulaması?={0} kullanıcı adı&={1} şifre Almak (DEĞİL) kimlik Doğrulaması arayıp hata sonra:

Parametreleri sözlük parametre için boş bir giriş 'id' null olmayan tür 'Sistemi içerir.'Yöntem 'System.Int32 Dize Getir(Int32)' 'Navtrak.Hizmetleri.XML.NavtrakAPİ.Denetleyicileri.'. UsersController İsteğe bağlı bir parametre bir başvuru türü, null türü, veya isteğe bağlı bir parametre olarak bildirilmelidir.

Nasıl kimlik Doğrulaması gibi özel yöntem adları diyebilir miyim?

CEVAP
5 Mart 2012, PAZARTESİ


Varsayılan rota yapılandırma Dinlendirici kuralları (genel olarak yol bak.Get, Post, Put ve Delete işlemi adları kabul edileceğini anlamı şudur= ^ asax . varsayılan olarak, herhangi bir eylem adı belirtmek için izin vermez =>HTTP Merkez fiil) kullanır. Yani bir /api/users/authenticate GET isteği gönderdiğinizde, temelde Get(int id) Eylem olarak nitelendirdi ve tabii ki eylem nedeniyle çöküyor id=authenticate geçen bir tamsayı bekliyor.

Eğer standart olanlardan daha farklı eylem adları sahip olmak istiyorsanız global.asax yol senin tanımını değiştirebilir:

Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { action = "get", id = RouteParameter.Optional }
);

Şimdi /api/values/getauthenticate kullanıcı kimlik doğrulaması için gidebilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Khoury

    Adam Khoury

    23 Ocak 2008
  • GWTLecturer

    GWTLecturer

    18 EKİM 2012
  • TimMinchinLive

    TimMinchinLi

    23 ŞUBAT 2009