2013-05-20 2 views
0

Что такое принятый сообществом способ построения api с использованием django? Использование формата/xxx/method/whatever или использования синтаксиса php?Django api api/add/2/+/3 vs api/method = add & expression = 2 + 3

Благодаря

+0

Зачем вам нужно указывать как 'add', так и' + '? Почему бы не api/add/2/3' или 'api/2 + 3'? – Eric

+0

Ваша вариация имеет смысл, однако контент был сделан «на лету», это не главная точка вопроса, это могло бы быть так же легко: xxx/fff vs method = xxx & value = fff –

+0

Как насчет отправки всех данных в качестве json для подготовки сделать еще несколько сложных вычислений? – yedpodtrzitko

ответ

1

Там нет ничего конкретного о делая API в Django. REST принципы применяются независимо от используемой вами веб-структуры.

Короче говоря, есть 4 основных HTTP глаголы:

GET - for listing resources or retrieving details 
POST - for creating resources 
PUT - for replacing/updating resources 
DELETE - for deleting resources 

Запрос строки с GET следует использовать для поисковых запросов. Например:

  1. Wolfram Alpha использует URL-закодированные строки для выполнения запросов о математическом выражении: https://www.wolframalpha.com/input/?i=2%2B3
  2. Google использует URL-закодированные строки для своего поискового запроса: https://www.google.com.au/search?q=2%2B3

Если математическое выражение создает новое ресурсов, они должны быть отправлены в орган POST, как правило, либо закодированный по URL, либо для более сложных ресурсов в JSON в качестве XML. Аналогично, с PUT для обновления и DELETE для удаления. Ресурсы, необходимые для создания/обновления/удаления, должны быть идентифицированы по его URL-адресу.

Если вы хотите поддерживать несколько форматов (например, XML, JSON) или несколько языков одного и того же ресурса, вы должны использовать Content Negotiation. Кроме того, рекомендуется использовать принцип HATEOAS, все URL-адреса, используемые в службе, должны быть доступны для обнаружения в самой службе, а не должны быть выведены из отдельной документации.