@pydjango

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

Илья
10.03.2017
13:53:00
http://stackoverflow.com/questions/23361057/django-comparing-old-and-new-field-value-before-saving?answertab=votes#tab-top ну вот тут сделано
Да это может сработать. Но если после init до save было много логики, какая-нибудь сложная форма и модель с множеством FK, в этом случае потенциально оно может не верно сработать, если в другом процессе уже кто-то изменил статус. Лучше бы конечно изменение статуса проверять непосредственно перед save.

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 архитектуре?

про REST вообще

Pavel
10.03.2017
13:57:52
почитай спецификацию swagger
спасибо, пойду гляну

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
мне больше нравится идеология внутренних статусов ответа
если создаётся какой-либо объект - код ответа 201

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 гласит вообще другое

Страница 174 из 1273