WCF Остальные соглашения об именах методов и URI? - PullRequest
1 голос
/ 07 августа 2010

Интересно, может ли кто-нибудь подтвердить, что соглашение об именах, которое я использую, является правильным, я только начал и действительно не хочу впадать в дурную привычку

Вот что у меня есть ... (см. Комментарии)

В основном у меня есть метод с именем GetTasks, но URI - это Задачи - я полагаю, что это путь ??

Также у меня есть метод GetUser, где Uri - это (множественное число) Users / {id}

Любое подтверждение, прежде чем я продолжу, было бы здорово .. спасибо ..

вот методы, которые у меня есть в настоящее время ..

    [WebGet(UriTemplate = "Tasks")]
    public List<SampleItem> GetTasks()  //RETURNS a COLLECTION
    {
        // TODO: Replace the current implementation to return a collection of SampleItem instances
        return new List<SampleItem>() { new SampleItem() { Id = 1, StringValue = "Hello" } };
    }


    [WebGet(UriTemplate = "Users/{id}")]
    public SampleItem GetUser(string id) // RETURNS A USER
    {
        // TODO: Return the instance of SampleItem with the given id
        //throw new NotImplementedException();
        return new SampleItem() {Id = 1, StringValue = "Hello"};
    }

    [WebInvoke(UriTemplate = "Users/{id}", Method = "PUT")]
    public SampleItem UpdateUser(string id, SampleItem instance) // UPDATES A USER
    {
        // TODO: Update the given instance of SampleItem in the collection
        throw new NotImplementedException();
    }

    [WebInvoke(UriTemplate = "Users/{id}", Method = "DELETE")]
    public void DeleteUser(string id) // DELETES A USER
    {
        // TODO: Remove the instance of SampleItem with the given id from the collection
        throw new NotImplementedException();
    }

1 Ответ

1 голос
/ 10 августа 2010

Ну, иногда подражание - лучшая форма лести. Если вы посмотрите на StackOverflow, они используют users/{userid}/... для соглашения URI. Обычно использование множественного числа для сущностей и последующее описание следующего сегмента (если оно есть) описывает действие, кажется довольно стандартным. Обычно я определяю RESTful-сервисы:

GET      /Users         -- return all users
GET      /Users/{id}    -- return a single user
POST     /Users         -- insert a user
PUT      /Users/{id}    -- update a user
DELETE   /Users/{id}    -- delete a user

Это также хорошо подходит для Служб данных WCF. Хотя вы определяете имена сущностей, шаблон, как правило, одинаков. Приятно то, что вы также можете определять запросы по URL для ваших GET, и он снова следует шаблону:

GET     /Users?$top=10&filter=name eq 'Steve'  -- return top 10 users who's name is steve

Так что я думаю, что вы идете в правильном направлении. Рассматривали ли вы WCF Data Services? Он строит эти операции сущностей для вас - но это может быть неправильным решением в зависимости от ваших требований.

Удачи. Надеюсь, это поможет.

...