2011-08-13 17 views
0

/Person/1と/ Person/Blairによって人を取得したい場合 どうすればいいのですか?OpenRasta Route Constraints

設定クラス:

public class RastaConfiguration : IConfigurationSource 
{ 
    public void Configure() 
    { 
     using (OpenRastaConfiguration.Manual) 
     { 

      ResourceSpace.Has.ResourcesOfType<List<Subject>>() 
       .AtUri("/Subject") 
       .HandledBy<SubjectHandler>() 
       .TranscodedBy<JsonDataContractCodec>(); 

      ResourceSpace.Has.ResourcesOfType<List<Person>>() 
       .AtUri("/Person").And.AtUri("/Person/{name}") 
       .HandledBy<PersonHandler>() 
       .TranscodedBy<JsonDataContractCodec>(); 

      ResourceSpace.Has.ResourcesOfType<Person>() 
       .AtUri("/Person/{id}") 
       .HandledBy<PersonHandler>() 
       .TranscodedBy<JsonDataContractCodec>(); 
     } 
    } 
} 

とハンドラ

public class PersonHandler 
{ 

    private static readonly List<Person> People = new List<Person> 
              { 
               new Person {Id = 1, Name = "Blair Davidson", Subjects = new List<Subject> 
                            { 
                             new Subject{ Name = "Maths"} 
                            }}, 
               new Person {Id = 2, Name = "Esther Hew", Subjects = new List<Subject> 
                            { 
                             new Subject{ Name = "Chinese"} 
                            }} 
              }; 

    public IEnumerable<Person> Get() 
    { 
     return People; 
    } 

    public IEnumerable<Person> GetByName(string name) 
    { 
     return People.Where(x => x.Name.Contains(name)).ToList(); 
    } 

    public Person GetById(int id) 
    { 
     return People.SingleOrDefault(x => x.Id == id); 
    } 

    public OperationResult Post(Person person) 
    { 
     People.Add(person); 

     return new OperationResult.Created 
        { 
         ResponseResource = person 
        }; 
    } 


} 

のasp.net MVCのような制約を使用する方法はありますか?

ご協力いただければ幸いです。

答えて

1

URIに(configの名前付きメソッドを使用して)名前を付け、そのURIをHttpOperation属性でバインドするメソッドに同じ名前を付け、ForUriNameプロパティをあなたが登録した価値。