2015-04-20 2 views
2

На основе книги, которую я читал, и нескольких статей, способ указать ваш REST API состоит в том, чтобы использовать большинство методов HTTP, а не туннельный метод GET для создания, как это показано в демонстрации для Sails.js, вы можете создать образцовых экземпляров просто путем запроса GET наЯвляется ли REST API создан Sails.js действительно RESTful и соблюдает соглашение?

/modelName/create?property=value 

Ну, это не RESTful вообще. Вместо этого мы должны сделать запрос PUT на /modelName. Или я что-то упустил?

+0

Вы совершенно правы. Запрос на получение должен быть методом _safe_ (nullipotent), который должен возвращать более или менее одну и ту же структуру данных независимо от того, как часто он вызывается, но, что более важно, не должен изменять структуру данных самостоятельно. – frhd

+0

Вопросы Github, вероятно, являются подходящим местом для размещения этого вопроса. – frhd

+0

Вы также можете получить поддержку сообщества в прямом эфире для sails.js в нашем чате: https://gitter.im/balderdashy/sails –

ответ

2

В REST API существует два способа создания почти всех ресурсов пользователем.

  1. POST в коллекцию, которая будет содержать новый ресурс:

    [Request] 
    POST /gizmos 
    { 
        "name": "widget" 
    } 
    
    [Response] 
    201 Created 
    Location: /gizmos/71 
    
  2. Или в PUT нового ресурса непосредственно на его месте:

    [Request] 
    PUT /gizmos/71 
    { 
        "name": "widget" 
    } 
    
    [Response] 
    204 No Content 
    

Создание ресурс, делающий GET /gizmos/create, является плохим.

  • GET не должен ничего менять при обслуживании. Выполнение этого 0, 1 или 1000 раз должно иметь одинаковый эффект: никакого эффекта.
  • URL не должен содержать глагол. URL должен быть существительным. Метод HTTP - GET, POST, PUT, DELETE - это глагол.
+0

Да, точно! Из-за свойств безопасности и идемпотенции. Я знаю это, но все еще был смущен, почему API автоматически создается таким образом (имея много звезд в GitHub) и задавался вопросом, не хватает ли я чего-то здесь. – Tommz

1

Да, вы есть. То, что вы узнали из демонстрационного примера, - это ярлык или помощник, чтобы использовать действия отдыха из браузера, которые не успокаиваются вообще. Он предназначен для тестирования (включен по умолчанию) и не должен использоваться в производстве.

Используйте http-глаголы, чтобы сделать запрос к вашим контроллерам, например. a DELETE запрос /user/1 удалит пользователя с идентификатором 1. И это очень успокаивает.