
F01134H
17.03.2017
22:26:10
ну, таки авторизация есть
но она не сохраняется реализацией самого апи, а передается на лево)
короче не суть, не в этом вопрос был

Артур
17.03.2017
22:27:30
А, ну все верно

Google

Jan
18.03.2017
09:02:48
После обновления до macOS Sierra появилась странная вещь. Встроенный пхпшный сервер (PHP 7.1.1) всё время редиректит на http://localhost, тогда как я задаю конкретный порт, например php -S localhost:8030. А сам http://localhost выдает «It works!».
Кто-нибудь сталкивался с этим?

Артур
18.03.2017
09:03:48
It works - Apache
Редиректит твой код скорее всего

Jan
18.03.2017
09:04:52
Апач это да, но я на каких только проектах не пробовал.
В смысле, в разных папках.

Артур
18.03.2017
09:05:14
И?)
Апач в системе стоит

Jan
18.03.2017
09:05:45
Так мне он не нужен. Мне нужно по-нормальному встроенный сервер запустить.

Артур
18.03.2017
09:05:49
Хотя его гнать в шею надо, тем более ты его не юзаешь

Jan
18.03.2017
09:06:07
А встроенный даже не ловит запрос.

Артур
18.03.2017
09:06:07
Ну и удали, в чем проблема то
И встроенный вешай на 80

Google

Артур
18.03.2017
09:06:55
Все он ловит, что-то тебя редиректит же

Jan
18.03.2017
09:07:54
Нифига себе. Это был браузерный кеш.
Хрома.

Артур
18.03.2017
09:08:24
Да, 301 кешируется

Vadim
18.03.2017
12:03:46
лишь бы на сиерру нагнать)

Sergey
18.03.2017
15:42:56
restful же отрицает любое хранение информации, не?
нет. stateless там про то что тебе не должно быть важным с каким сервером ты сейчас говоришь. Ты можешь юзать http2 или websockets или waka (протокол который сам Рой Филдинг придумал). Да и потом, tcp сам по себе предполагает наличие состояния между клиентом и сервером тупо для установления соединения.
ну то есть если у тебя например вся коммуникация идет по websockets, и тебе без разницы к какому серваку подключаются клиенты

F01134H
18.03.2017
15:43:47
Я не хочу этот банан.
Сергей, успокойся, я уж забил на это :D

Sergey
18.03.2017
15:44:20

F01134H
18.03.2017
15:44:52
Сейчас мозг занят апишкой)

Sergey
18.03.2017
15:44:54
а не вижу ты там писал

F01134H
18.03.2017
15:44:54
а не стейтлесом

Sergey
18.03.2017
15:45:09
ну... я сейчас просто как раз делаю докладик на тему "как делать апишки")
а потому если у тебя будет потом список "что тебе было непонятно" будет ништяк
а не стейтлесом
это весьма полезная штука которая позволит тебе горизонтально масштабировать api, хотя может тебе и не надо

F01134H
18.03.2017
15:46:24
Вот что непонятно, так это как лаконично сделать вывод ошибок)
Ща дам пример

Sergey
18.03.2017
15:46:55
статус код + json

Salavat
18.03.2017
15:46:55

Google

Sergey
18.03.2017
15:47:14

F01134H
18.03.2017
15:47:24
вот это я еще сократил

Sergey
18.03.2017
15:47:30

Salavat
18.03.2017
15:47:43
Да недавно кто-то сообщение размещал о том, что ты скоро где-то будешь выступать :)

Sergey
18.03.2017
15:47:54
кидаешь исключения, ловиш исключения и конвертишь их в респонсы

F01134H
18.03.2017
15:48:02
Ндяяя

Vadim
18.03.2017
15:48:12
Когда используешь емпти, подумай, точно ли тебе нужен именно емпти

Sergey
18.03.2017
15:48:27

F01134H
18.03.2017
15:48:31

Sergey
18.03.2017
15:48:59
Ндяяя
это наиболее гибкий случай, потому что исключения которые тебе будут прилетать из внутри приложения тебе тоже надо как-то обработать и превратить в нужный респонс

Vadim
18.03.2017
15:49:03
Пустой массив, пустая строка, ноль - все емпти

Sergey
18.03.2017
15:49:17
и вообще - почитай про мидлвари

Vadim
18.03.2017
15:49:30
Еще круто прикол с ним был, не помню

F01134H
18.03.2017
15:49:49
и там уже костыль ->isEmpty()

Sergey
18.03.2017
15:50:12
там - да)
и еще, грамотно используй статус коды. если не верный токен - надо слать не 403 а 401

F01134H
18.03.2017
15:50:17

Sergey
18.03.2017
15:50:27
большинство фреймворков клиентских автоматически воспринимают 401 как "надо залогиниться"
а 403 это "я залогинено и лезу не туда"

Google

Sergey
18.03.2017
15:50:49

F01134H
18.03.2017
15:50:58

Sergey
18.03.2017
15:51:09

F01134H
18.03.2017
15:51:18
обработчик из миддлвара)

Admin
ERROR: S client not available

Sergey
18.03.2017
15:51:40
слишком много ифов
это все можно красиво развернуть

F01134H
18.03.2017
15:52:00
Вот пока такое сделал
коды ошибок
public int SomeFunction(bool cond1, string name, int value, AuthInfo perms)
{
if (!someCondition)
return BAD_COND;
if (name == null || name == "")
return BAD_NAME;
if (value == 0)
return BAD_VALUE;
if (!perms.allow(name))
return PERM_DENY;
// Do something
return SUCCESS;
}
оно?

Roman ?
18.03.2017
16:00:05
А в скобки обернуть?

F01134H
18.03.2017
16:03:17
Зачем?
эт уже личные предпочтения)

Alexander
18.03.2017
16:05:02
PSR-2, да и дебажить потом неудобно или добавлять какие-нибудь доп. действия

Google

F01134H
18.03.2017
16:08:10
а если у меня одно действие на всю функцию, а потом одни ифы однострочные?)

Vadim
18.03.2017
16:19:20
Фоли епт
Ты че как лох
Сделай так, чтобы никто не видел кода без фигурных скобок
Это не личные предпочтения
Это мина
Ебаная мина, на которой ты 100% подорвешься

F01134H
18.03.2017
16:20:52
Ладно ладно
но если че, эт не мой код был
это даж не пыха
?
эт пример со стэка

Vadim
18.03.2017
16:21:17
Для таких отдельный котел вообще есть :)

Artem
18.03.2017
16:25:23

Vadim
18.03.2017
16:26:42
Когда-нибудь ты обязательно вечером допишешь вторую инструкцию в типа блок, который не блок как минимум
Читать это почти всем отвратительно
Лишние действия, чтобы в адеквате дописать вторую инструкцию в блок

Artem
18.03.2017
16:28:17
отвратительность - дело привычки. Лишнюю инструкцию не припоминаю чтобы писал, да и заметишь сразу, даже если будет такое. Про вторую строку согласен, но это всё же миной не назовёшь