
Илья
10.03.2017
13:50:42

Serge
10.03.2017
13:51:24
cloudflare не защищает онособо от краулинга информации

Илья
10.03.2017
13:53:00

Serge
10.03.2017
13:53:52

Google

Илья
10.03.2017
13:53:55
Хотя конечно тоже не гарантия.

Pavel
10.03.2017
13:56:09
извиняюсь за глупый вопрос, просто с REST не довелось работать. Вот если у меня API на получение данных - мне понятно, я сделал запрос, получил, например, json. А если я хочу сделать запрос на создание записи, что в ответ мне должно прийти?

Serge
10.03.2017
13:56:50
идешник или вернет эту запись

Илья
10.03.2017
13:57:16
Вопрос про REST вообще или DRF?

Pavel
10.03.2017
13:57:17
про REST вообще

Alexander
10.03.2017
13:57:33
это почти стандарт
http://swagger.io/specification/

Pavel
10.03.2017
13:57:52

Alexander
10.03.2017
14:04:00
в общем, не должно быть конфликтов со сваггером, других стандартов (ну, таких явных) вроде бы нет, в данном случае логично вернуть 201 код и содержимое созданного объекта

Tigran
10.03.2017
14:08:30
мне больше нравится идеология внутренних статусов ответа
http код может быть 200|404|500

Google

Tigran
10.03.2017
14:09:25
в случае 500 что нибудь такое
{
"status": "error",
"code": "50008",
"message": "Not enough balance on account"
}

Rail'
10.03.2017
15:00:03
Не понятное поведение рест фреимворка
есть сериализатор
class ItemSerializer(serializers.ModelSerializer):
class Meta:
model = Item
fields = ('id', 'title', 'description' )
class ItemViewSet(viewsets.ReadOnlyModelViewSet):
serializer_class = ItemSerializer
queryset = Item.objects.active()
permission_classes = (permissions.IsAuthenticated,)
почему при запросе /api/Items/ при пустом queryset выдается json вида {'title: '', 'description': ''} ?

Alex
10.03.2017
15:02:24
там есть функция
которая либо выдает значение либо notFound
прост не помню как называется
посмотри django api

Alexander
10.03.2017
15:04:43

Tigran
10.03.2017
15:06:09
тут два варианта, Саш

Alexander
10.03.2017
15:06:12
внутри могут быть любые коды

Tigran
10.03.2017
15:06:34
либо у тебя за коды отвечает http
либо приложение
мне больше нравится, когда сервер отвечает 200 - во всех успешных случаях

Alexander
10.03.2017
15:07:00
у HTTP нет достаточно большого количества кодов ответа

Tigran
10.03.2017
15:07:02
404 - не найден
500 - любая ошибка
воот

Alexander
10.03.2017
15:07:20
ну, это криво, если есть 200, 404 и 500, но нет 201

Tigran
10.03.2017
15:07:26
поэтому, я придерживаюсь того мнения, что хватит использование этих трех
ну, криво когда есть 201 и нету к примеру 405

Google

Tigran
10.03.2017
15:08:14
если гоняться за ними, придется все включить

Alexander
10.03.2017
15:08:19
если у HTTP есть код ответа, который подходит - нужно его использовать
ну так да
если есть то, что подходит - мы это включаем
400
403

Tigran
10.03.2017
15:09:05
мне нравится идеология белого дома
Use three simple, common response codes indicating (1) success, (2) failure due to client-side problem, (3) failure due to server-side problem:
200 - OK
400 - Bad Request
500 - Internal Server Error
(про 404 я ошибься, я имел ввиду 400)
так вот, 200 в случае успеха, 400 в случае ошибки со стороны клиента
500 в случае ошибки со стороны сервера
это best practices

Tigran
10.03.2017
15:09:59
все остальное по внутренним кодам

Alexander
10.03.2017
15:10:12
внутренний код нужен в любом случае
внешний код ответа HTTP согласно https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

Tigran
10.03.2017
15:11:40
на практике так не делают

Alexander
10.03.2017
15:11:52
на практике по другому и быть не может

Tigran
10.03.2017
15:11:55
на практике делают примерно так
https://github.com/WhiteHouse/api-standards

Alexander
10.03.2017
15:12:06
потому что API-сервер стоит за балансировщиком, которому пофиг, что у тебя нет 504 кода

Google

Alexander
10.03.2017
15:12:14
и он этот код покажет, если вдруг будет нужно

Tigran
10.03.2017
15:12:33
ну, мы сейчас не совсем про балансировщик
если ошибку выдает балансировщик, до приложения не доходит

Alexander
10.03.2017
15:12:54
все API стоят за балансировщиком, ты не можешь контролировать конечный список кодов

Tigran
10.03.2017
15:13:04
не можешь
но включив много http кодов, ты создашь хлопоты девелоперам, которые используют API
придется обрабатывать все эти коды ошибок
когда могло бы хватит следующего

Alexander
10.03.2017
15:14:30
ты можешь контролировать только те коды, которые в поле ответа, а HTTP просто подстраивать по ситуации к тому, что принято, некоторые HTTP коды более распространены, некоторые менее, но тот же 201 200 400 403 404 500 и прочее - это типовые, они встречаются везде, нет смысла ограничивать их
пусть страдают)

Admin
ERROR: S client not available

Tigran
10.03.2017
15:15:12
ну, 201 200 400 403 404 500 можно
а вот дальше... точно не стоит
всякие 41х, 50х
на счет того же 404 - очень спорный вопрос
http коды - это коды транспортного уровня
ну вот допустим

Alexander
10.03.2017
15:16:56
ты выше писал о том, что у тебя там некий ограниченный список и тебе хватит, но не получится сделать его ограниченным, там всегда будет вероятность, что какой-нибудь балансирвщик/прокси вернёт такой код, которого нет в API

Tigran
10.03.2017
15:17:07
у меня метод GET /api/v1/cars/{id}
что ты отдашь в случае если машина по этому id не найдена?

Google

Alexander
10.03.2017
15:18:20
есть куча причин, почему её может не быть
у каждого может быть свой код ошибки
внутри тела ответа

Tigran
10.03.2017
15:18:40
ок, допустим, ее просто нет
по такому айди
ты отдашь 404 или в теле напишешь?

Alexander
10.03.2017
15:19:22
я отдам 404 И напишу в теле

Tigran
10.03.2017
15:19:47
ок, следующий вопрос
разработчик спутал, вместо GET /api/v1/cars/{id} отправил на
GET /api/v1/car{id}

Alexander
10.03.2017
15:20:00
отдавать 200 когда больше подходит 201 - это небрежность

Tigran
10.03.2017
15:20:13
а такого метода нет, как ему ответишь?

Alexander
10.03.2017
15:20:38
согласно коду состояний

Tigran
10.03.2017
15:21:02
так такого метода же нет, это тоже будет 404ая?

Alexander
10.03.2017
15:21:09
будет 400
потому что Bad Request

Tigran
10.03.2017
15:21:54
почему?

Alexander
10.03.2017
15:22:04
потому что такого метода нет

Tigran
10.03.2017
15:22:10
400 bad request гласит следующее - The request could not be understood by the server due to malformed syntax.
запрос не понятен

Alexander
10.03.2017
15:22:28
можешь 405

Tigran
10.03.2017
15:22:32
404 Not found гласит - The server has not found anything matching the Request-URI.

Alexander
10.03.2017
15:22:35
Method Not Allowed

Tigran
10.03.2017
15:22:49
405 гласит вообще другое